0

我正在尝试从其他对象的层次结构中创建对象数组,如下所示:

代码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”

列表,如果重要的话,人是核心数据管理的对象..我做错了什么???

4

1 回答 1

1

您应该检查persons. 看起来它是一个NSSet,并且valueForKey:onNSSet会返回一个NSSet。此代码段应按预期工作:

NSSet* testSet = [list.persons valueForKey:@"name"];
于 2009-09-12T22:07:42.690 回答