【发布时间】:2011-11-25 09:08:30
【问题描述】:
我有一个 NSArray 实例,其中包含一些类型的对象 (NSDictionary)..
我需要将此 Array 复制到某个运行时已知类型的 NSArray。
所以我需要创建运行时已知类型的实例并将 NSDictionary 的内容复制到其中。
我实际上已经创建了这些 NSObject 类型的实例,但是当在头后查询它时,我得到了unrecognized selector 错误!
NSUInteger count = [value count];
NSMutableArray* arr = [[NSMutableArray alloc]initWithCapacity:count];
if (count > 0)
{
for (int i=0; i < [value count]; i++)
{
id newObj = [[NSObject alloc] init];
id currentValue = [value objectAtIndex:i];
[self objectFromDictionary:currentValue object:newObj];
[arr addObject:newObj];
}
}
[arr release];
编辑:
objectFromDictionary 忘了它,它所做的是检查 newObj 的属性并通过字典中的值设置它。它的工作做得很好。
EDIT 2:
请看看我为什么要这样做:
【问题讨论】:
-
你的
objectFromDictionary:object:到底应该做什么,你应该发布代码,因为分配一个 NSObject 通常是没有意义的。 -
这不是 NSCopying copyWithZone 的用途吗?只要您要复制的对象实现了 copyWithZone 它应该可以工作。如果对象没有实现 copyWithZone 你就完蛋了。
标签: iphone objective-c introspection objective-c-runtime