iOS JSON twitter响应,转换为mutable

时间:2013-10-13 23:43:25

标签: twitter nsmutablearray ios7 nsmutabledictionary

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

这是我的代码:

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

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

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

这个顺序和执行可变副本FIRST是我尝试过的最后一件事。这是抛出错误的代码:

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

以下是典型的错误消息:

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

我明白为什么它会给我错误,我的问题是如何将所有内容(所有子词典和数组,以及所有子词典和数组等)变为可变,以便我可以更改数据。

任何帮助都很棒,谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用Core Foundation中的CFPropertyListCreateDeepCopy

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

有关详细信息,请参阅CFPropertyList reference。特别是,Property List Mutability Options可用于控制返回副本中的可变内容。