在xCode中,我已经使用来自我的网络服务器的json数据填充了一个NSMutableArray。 我在数组中有100个条目 - 每个条目都有一个名称,地址,网站等....
现在我想创建一个for循环并更新每个条目的名称 - 但我不知道如何做到这一点。我需要这样的东西:
for(int i=0; i < jsonArray.counter; i++)
{
[[jsonArray objectAtIndex:i] objectForKey:@"name"] = "bla bla bla";
}
我知道这个例子不会起作用,但我认为你知道我在你看到它时想做什么;)
答案 0 :(得分:0)
在你的情况下,你需要使用setObject For Key方法,假设jsonArray中的每个条目都是一个NSMutableDictionary对象
for(id object in jsonArray)
[object setObject:@"bla bla bla" forKey:@"name"];
for(id object in jsonArray)
{
NSMutableDictionary *mutableObject=[NSMutableDictionary dictionaryWithDictionary:object];
[mutableObject setObject:@"bla bla bla" forKey:@"name"];
[jsonArray replaceObjectAtIndex:[jsonArray indexOfObject:object] withObject:mutableObject];
}
答案 1 :(得分:0)
您通过网络从磁盘/接收中读取的内容往往是不可变对象的不可变集合的不可变集合。
为了能够改变事物,您需要将您更改的任何集合转换为可变形式。
@ NofelMahmood的帖子是朝着正确方向迈出的一步。
您可能需要更改&#34;对象图的整个分支&#34;为您想要更改的每个项目的可变对象。或者,如果您遍历整个数组,只需遍历数组,为每个项目制作一个可变副本,然后将其复制到新数组中。这解决了在枚举时你无法改变(变异)和数组的问题:
//Create an empty mutable array to contain the changed dictionaries
NSMutableArray *mutableJSONArray = [NSMutableArray arrayWithCapacity: jsonArray.count];
//enumerate through the original array.
for (NSDictionary *aDictionary in jsonArray)
{
//Make a mutable copy of each dictionary in the array.
NSMutableDictionary *mDict = [aDictionary mutableCopy];
//Replace the value at key @"key" with some new value @"new value"
mDict[@"key"] = @"new value"; //Replace this part as needed
[mutableJSONArray addObject; mDict];
}
免责声明:上面的代码可能包含小错别字,可能最初不会编译。清理它取决于你。