复制字典会将NSMutableArray更改为NSArray吗?

时间:2012-11-02 14:51:21

标签: objective-c nsmutablearray nsmutabledictionary

所以我有这个NSMutableDictionary对象:

pdata=[[NSMutableDictionary alloc] initWithObjectsAndKeys:
       @"",@"pid",
       @"",@"pname",
       [[NSMutableArray alloc] initWithCapacity:1],@"ilist",
       nil];

然后我将这个对象复制到另一个对象中:

NSMutableDictionary *pdataCopy=[[NSMutableDictionary alloc] initWithDictionary:pdata copyItems:TRUE];

但是一旦我这样做了,pdataCopy.ilist现在是一个NSArray而不是NSMutableArray。

如何复制字典对象,同时保持其内部属性的可变性?

2 个答案:

答案 0 :(得分:2)

其实你做不到。你可以通过

获得一个可变数组
NSMutableArray *mutableArray = [pdataCopy.ilist mutableCopy]

答案 1 :(得分:0)

您有三种选择:

  1. 请勿指定copyItems:YES
  2. 复制后扫描字典,并根据需要用NSMutableArrays(使用mutableCopy)替换NSArrays。
  3. 创建自己的NSMutableArray子类,通过生成自身的可变副本(并在字典中使用该类的对象)来响应copyWithZone