Pregunta

Tengo algo de código que se basa en la comparación de dos NSIndexPaths y ejecutar código diferente en función de su igualdad o la falta de ella (usando -isEqual). La mayoría de las veces funciona correctamente, pero a veces no lo hace. He usado la consola de depuración para probar los dos indexpaths durante la ejecución de código, y se ven idénticas a mí.

Aquí está el código:

- (BOOL)selectedStreetIsSameAsLastSelectedStreet
{
    return [self.indexPathOfSelectedStreet isEqual:self.previousObject.indexPathOfSelectedStreet];
}

Aquí está la salida durante la ejecución del código:

(gdb) po self.indexPathOfSelectedStreet
<NSIndexPath 0x60a0770> 2 indexes [26, 1]
(gdb) po self.previousObject.indexPathOfSelectedStreet
<NSIndexPath 0x55b4f70> 2 indexes [26, 1]
(gdb) p (BOOL)[self.indexPathOfSelectedStreet isEqual:self.previousObject.indexPathOfSelectedStreet]
$2 = 0 '\000'

¿Estoy haciendo algo mal, o hay otra manera de que pueda probar de forma fiable la igualdad de dos NSIndexPaths?

¿Fue útil?

Solución

Lo de iOS 5 sólo puede utilizar isEqual: (ver comentarios)


Trate [indexPath1 compare: indexPath2] == NSOrderedSame.

Tal vez ha encontrado un fallo en NSIndexPath. Si intenta crear un nuevo NSIndexPath con un camino que ya existe usted debe conseguir que una vez. Así isEqual: probablemente sólo compara los punteros y no los índices reales almacenados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top