Добавление объекта NSMutableArray с помощью цикла ForEach - PullRequest
1 голос
/ 17 августа 2010

вот что я пытаюсь сделать:

NSMutableArray *objectNames = [[NSMutableArray alloc] init];
for (Object *o in objectList){
    if (![objectNames containsObject:o.name]) {
        [objectNames addObject:o.name];
    }
}

Я пытаюсь просмотреть массив объектов, затем взять имя объекта (строку) и добавить его в массив строк objectNames.

Этот код работает в симуляторе просто отлично. но когда я запускаю его на устройстве, я получаю эту ошибку.

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFArray insertObject:atIndex:]: attempt to insert nil'

Ответы [ 2 ]

4 голосов
/ 17 августа 2010

У одного или нескольких объектов в objectList свойство name имеет значение nil.Это приводит к тому, что вы пытаетесь вставить просто nil в objectNames, что дает вам исключение.

Если для объекта нормально иметь имя nil, вам нужно проверить это перед вставкойв objectNames:

NSMutableArray *objectNames = [[NSMutableArray alloc] init];
for (Object *o in objectList){
   if (name && ![objectNames containsObject:o.name]) {
      [objectNames addObject:o.name];
   }
 }
1 голос
/ 17 августа 2010

Похоже, что один из ваших объектов не имеет name установлен правильно

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