根据索引更新NSMutableArray

时间:2013-11-18 11:37:34

标签: ios objective-c nsmutablearray

我有NSMutableArray如下。

我有NSMutableArray数据如下。

(
        {
        Id = 3;
        Name = Fahim;
    },
        {
        Id = 2;
        Name = milad;
    },
        {
        Id = 1;
        Name = Test;
    }
)

我想将milad更改为New Name

表示我想更新索引1处对象的数据。

知道如何完成这项工作吗?

5 个答案:

答案 0 :(得分:4)

NSMutableDictionary *miladData = [array[1] mutableCopy];
[miladData setObject:@"New Name" forKey:@"Name"];
[array replaceObjectAtIndex:1 withObject:miladData];

答案 1 :(得分:2)

NSMutableDictionary *tempDict = [[yourArray objectAtIndex:1] mutableCopy];
[tempDict setObject:@"New Name" forKey:@"Name"];
[yourArray replaceObjectAtIndex:1 withObject:tempDict];

答案 2 :(得分:2)

如果数组中的对象是可变的(例如NSMutableDictionary),则可以更改实际字段,而不必替换数组中的任何内容:

NSMutableDictionary *dict = [array objectAtIndex:1];
[dict setObject:@"New Name" forKey:@"Name"];

如果数组中的对象是不可变的,则必须以正确的索引替换该对象:

NSDictionary *dict = @{@"Id":@2, @"Name":@"New Name"};
[array replaceObejectAtIndex:1 withObject:dict];

你也可以通过创建一个可变副本来做到这一点(但在这种情况下,与第一个不同,你设置回数组):

NSMutableDictionary *dict = [[array objectAtIndex:1] mutableCopy];
[dict setObject:@"New Name" forKey:@"Name"];
[array replaceObejectAtIndex:1 withObject:dict];

顺便说一句,词典中的Id值不是我们用来定位数组中的内容的。如您所指定,我们正在使用索引。如果你想根据这些Id记录查找值,请说明,因为代码会不同。

答案 3 :(得分:1)

获得对象索引后,应该替换对象。

[arrayOfData replaceObjectAtIndex:yourIndex withObject:yourObject];

答案 4 :(得分:1)

您需要在NSMutableArray中的给定索引处创建字典对象的可变副本。修改所需密钥的值。使用NSMutableArray API

[mutableArray replaceObjectAtIndex:index withObject:mutableCopiedObj];

希望有所帮助!