【发布时间】:2009-09-12 17:13:47
【问题描述】:
我正在尝试从其他对象的层次结构中创建一个对象数组,如下所示:
代码 1:
childController.names = [[NSMutableArray alloc] init];
for (Person *p in list.persons) {
[childController.names addObject:p.name];
}
代码 2:
NSMutableArray *testArray = [list.persons valueForKey:@"name"];
第一个代码 sn-p 完美运行,返回一个人名数组。相反,第二个返回一个包含正确数量的人名的数组,但是当我在 XCode 中调试代码时,它们显示为“超出范围”。当我尝试访问其中一个时,应用程序以以下方式终止:
由于未捕获而终止应用 例外 'NSInvalidArgumentException',原因: '*** -[NSCFSet objectAtIndex:]: 无法识别的选择器发送到实例 0x72e0620'
列表,如果重要的话,人员是 Core Data 管理的对象。我做错了什么???
【问题讨论】:
-
另外,如果您的
names属性是retain属性,那么当您使用[[NSMuatableArray alloc] init]设置它时,您会泄漏(好吧,在您设置后,您将获得 +2 保留计数设置你的属性)。 -
嗯,你能再解释一下吗?正确的方法是什么?谢谢!
标签: iphone objective-c key-value-coding