所以我有这个nsmutabledictionary对象:
pdata=[[NSMutableDictionary alloc] initWithObjectsAndKeys:
@"",@"pid",
@"",@"pname",
[[NSMutableArray alloc] initWithCapacity:1],@"ilist",
nil];
然后我将此对象复制到这样的另一个对象:
NSMutableDictionary *pdataCopy=[[NSMutableDictionary alloc] initWithDictionary:pdata copyItems:TRUE];
但是,一旦IVE完成此操作,pdataCopy.ilist
现在是NSArray而不是Nsmutablearray。
如何在维护其内部适当性的可变性的同时复制一个字典对象?
实际上你不能。您可以通过
获得一个可变的阵列NSMutableArray *mutableArray = [pdataCopy.ilist mutableCopy]
您有三个选项:
- 不要指定
copyItems:YES
- 根据需要扫描并用nsmutablearrays复制并替换NSArrays(使用
mutableCopy
)。 - 创建自己的NSMutableArray子类,该子类通过生成自身的可变副本来响应
copyWithZone
(并在您的字典中使用该类的对象)。