复制字典将nsmutablearray更改为nsarray



所以我有这个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]

您有三个选项:

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

最新更新