使用ForEach循环添加对象NSMutableArray

时间:2010-08-17 18:59:27

标签: iphone foreach nsmutablearray

这是我想要做的事情:

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 个答案:

答案 0 :(得分:4)

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 :(得分:1)

看起来您的某个对象没有正确设置name