超出KVC生成的数组范围

时间:2009-09-12 17:13:48

标签: iphone objective-c key-value-coding

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

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

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

1 个答案:

答案 0 :(得分:1)

您应该检查persons的类型。它似乎是NSSet,而valueForKey:上的NSSet将返回NSSet。此代码段应按预期工作:

NSSet* testSet = [list.persons valueForKey:@"name"];