Неволевой не всегда работает для NsindexPath? Что я могу использовать на своем месте?

StackOverflow https://stackoverflow.com/questions/3791044

Вопрос

У меня есть какой-то код, который опирается на сравнение двух NSindexPaths и выполнение другого кода, основанного на их равенстве или их отсутствии (с использованием-ресексуального qual). Большую часть времени он работает должным образом, но иногда это не так. Я использовал отладчикскую консоль для проверки двух индексных путей во время выполнения кода, и они выглядят идентичными для меня.

Вот код:

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

Вот вывод во время выполнения кода:

(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'

Я делаю что-то не так, или есть еще один способ, которым я могу надежно проверить равенство двух nsindexpaths?

Это было полезно?

Решение

Как на iOS 5 вы можете просто использовать isEqual: (см. комментарии)


Пытаться indexpath1 сравнить: indexpath2] == NSOrderedSame.

Может быть, вы нашли ошибку в NSIndexPath. Отказ Если вы попытаетесь создать новый NSIndexPath С пути, который уже существует, вы должны получить это вместо этого. Так isEqual: Вероятно, просто сравнивает указатели, а не фактические индексы хранятся.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top