0

我有一个应用程序正在请求关注者的用户列表。我希望能够更改从 twitter 返回的数组中的一些数据,但我似乎无法让它成为一个适当的可变副本。

这是我的代码:

NSMutableDictionary *theData = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];

NSMutableDictionary *TWData = [[NSMutableDictionary alloc] init];
TWData = [theData mutableCopy];

NSMutableArray *data = [TWData objectForKey:@"users"];

这是我尝试的最后一件事,并且首先执行可变副本的顺序。这是引发错误的代码:

[[data objectAtIndex:2] setObject:@"indeed" forKey:@"following"];

这是典型的错误消息:

[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'

我理解为什么它给了我错误,我的问题是我怎样才能使一切(所有子字典和数组,以及他们所有的子字典和数组等)都可变,以便我可以更改数据。

任何帮助都很棒,谢谢!

4

1 回答 1

1

您可以CFPropertyListCreateDeepCopy从 Core Foundation 使用:

NSMutableDictionary* mutableData = (NSMutableDictionary*) CFBridgingRelease(CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (CFPropertyListRef) theData, kCFPropertyListMutableContainers));

有关详细信息,请参阅CFPropertyList 参考。特别是,属性列表可变性选项可用于控制返回副本中的可变内容。

于 2013-10-14T18:10:36.877 回答