Ios NSMutableArray与NSDictionary到NSMutableDictionary

Ios NSMutableArray与NSDictionary到NSMutableDictionary,ios,objective-c,cocoa,Ios,Objective C,Cocoa,情况如下: 我在AFNetworking上有一个请求,它用NSArray检索了一个JSON 我的目标是对其中的nsdictionary进行变异。我已经制作了数组的mutableCopy,但我想知道是否可以轻松地修改所有内容。我需要手动遍历数组吗?NSJSONSerialization提供了一些选项,允许您控制生成的数据结构的可变性。只需传递适当的文件(可能是NSJSONReadingMutableContainers),就可以了。NSJSONSerialization提供了一些选项,允许您控制生

情况如下:
我在
AFNetworking
上有一个请求,它用
NSArray
检索了一个
JSON


我的目标是对其中的
nsdictionary
进行变异。我已经制作了数组的
mutableCopy
,但我想知道是否可以轻松地修改所有内容。我需要手动遍历数组吗?

NSJSONSerialization提供了一些选项,允许您控制生成的数据结构的可变性。只需传递适当的文件(可能是
NSJSONReadingMutableContainers
),就可以了。

NSJSONSerialization提供了一些选项,允许您控制生成的数据结构的可变性。只需传递适当的方法(可能是
NSJSONReadingMutableContainers
)就可以了。

你不能变异
NSDictionary
,因为只有
NSMutableDictionary
有方法
setObject:forKey:

因此,您应该为每个字典和空可变数组创建
mutableCopy
。然后用
for
循环填充该数组。您的代码应该是:

- (NSMutableArray *)mutatedArrayFromArray:(NSArray *)array
{
  NSMutableArray *resultArray = [NSMutableArray new];
  if([array count] > 0)
  {
    for(int i = 0; i < count; i++)
    {
      NSMutableDictionary *mutatedItem = [[array objectAtIndex:i] mutableCopy];
      [resultArray addObject:mutatedItem];
      [mutatedItem release]; // only with ARC disabled
    }
  }
  return [result autorelease]; // if ARC enabled : return result;
}
-(NSMutableArray*)mutatedArrayFromArray:(NSArray*)数组
{
NSMutableArray*resultArray=[NSMutableArray新建];
如果([数组计数]>0)
{
for(int i=0;i
你不能变异
NSDictionary
,因为只有
NSMutableDictionary
有方法
setObject:forKey:

因此,您应该为每个字典和空可变数组创建
mutableCopy
。然后用
for
循环填充该数组。您的代码应该是:

- (NSMutableArray *)mutatedArrayFromArray:(NSArray *)array
{
  NSMutableArray *resultArray = [NSMutableArray new];
  if([array count] > 0)
  {
    for(int i = 0; i < count; i++)
    {
      NSMutableDictionary *mutatedItem = [[array objectAtIndex:i] mutableCopy];
      [resultArray addObject:mutatedItem];
      [mutatedItem release]; // only with ARC disabled
    }
  }
  return [result autorelease]; // if ARC enabled : return result;
}
-(NSMutableArray*)mutatedArrayFromArray:(NSArray*)数组
{
NSMutableArray*resultArray=[NSMutableArray新建];
如果([数组计数]>0)
{
for(int i=0;i
即使将数组变为可变数组,我仍然无法更改字典内容,因为它不是可变字典。我想知道是否有一种方法可以让所有的数组都变为可变的。一般来说,如果你不能从一开始就得到可变形式的字典/数组,那么你必须遍历它们来生成一个“深层”可变副本。即使将数组变为可变数组,我仍然无法更改字典内容,因为它不是可变字典。我想知道是否有一种方法可以让所有的变量都以一种智能的方式变。一般来说,如果你不能从一开始就得到可变形式的字典/数组,那么你必须迭代它们来生成一个“深度”可变副本。太棒了!出于某种原因,我通过了那个,但没有注意到那个选项,那个指向我的选项。太棒了!出于某种原因,我通过了那个,并没有注意到那个选项,那个指向我的选项。