iphone [removeObjectIdenticalTo:] не работает - PullRequest
1 голос
/ 17 сентября 2010

У меня есть следующий код, который заполняет массив (это внутри цикла):

NSString *code = [NSString stringWithFormat:@"%@ - (%@) %@",[tempDic objectForKey:@"state"],[tempDic objectForKey:@"city"],[tempDic objectForKey:@"name"]];

[tempArrayOfAirports removeObjectIdenticalTo:code]; // checks for a previous object, then removes if found

[tempArrayOfAirports addObject:code]; //adds the object

Ранее код просто был:

NSString *code = [tempDic objectForKey:@"city"];

[tempArrayOfAirports removeObjectIdenticalTo:code];

[tempArrayOfAirports addObject:code];

Что сработало нормально, но по какой-то причине изменение «кода» не позволяет найти другие идентичные строки. Мой результат - огромный массив с множеством повторяющихся объектов.

1 Ответ

9 голосов
/ 17 сентября 2010

Поскольку вы создаете новую строку в своем новом коде, вы, вероятно, захотите использовать removeObject: вместо removeObjectIdenticalTo:.Метод removeObjectIdenticalTo: использует адреса объектов для проверки на "идентичность", тогда как removeObject: проверяет на равенство, используя isEqual:.Если вы заботитесь только о содержимом строк, используйте removeObject:.

. В вашем старом коде вы, вероятно, вставили один и тот же объект в tempDic и tempArrayOfAirports, чтобы проверка адреса работала.Это не относится к вашему новому коду, в котором вы создаете новую строку (по новому адресу) с stringWithFormat:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...