我正在尝试从其他对象的层次结构中创建一个对象数组,如下所示:
代码1:
childController.names = [[NSMutableArray alloc] init];
for (Person *p in list.persons) {
[childController.names addObject:p.name];
}
代码2:
NSMutableArray *testArray = [list.persons valueForKey:@"name"];
第一个代码段工作正常,返回一组人名。相反,第二个返回一个具有正确人名的数组,但是当我在XCode中调试代码时,它们显示为“超出范围”。当我尝试访问其中一个时,应用终止于:
因未捕获而终止应用 例外 'NSInvalidArgumentException',原因: '*** - [NSCFSet objectAtIndex:]: 无法识别的选择器发送到实例 0x72e0620'
列表,人员是核心数据管理对象,如果它重要..我做错了什么???
答案 0 :(得分:1)
您应该检查persons
的类型。它似乎是NSSet
,而valueForKey:
上的NSSet
将返回NSSet
。此代码段应按预期工作:
NSSet* testSet = [list.persons valueForKey:@"name"];