【问题标题】:update NSMutableArray based on index根据索引更新 NSMutableArray
【发布时间】:2013-11-18 11:37:34
【问题描述】:

我有如下的 NSMutableArray。

我有如下 NSMutableArray 数据。

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

我想把milad改成New Name

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

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

【问题讨论】:

  • 你得到对象的索引了吗?
  • 是的,我的对象索引为 1(在我的情况下)

标签: ios objective-c nsmutablearray


【解决方案1】:
NSMutableDictionary *miladData = [array[1] mutableCopy];
[miladData setObject:@"New Name" forKey:@"Name"];
[array replaceObjectAtIndex:1 withObject:miladData];

【讨论】:

    【解决方案2】:
    NSMutableDictionary *tempDict = [[yourArray objectAtIndex:1] mutableCopy];
    [tempDict setObject:@"New Name" forKey:@"Name"];
    [yourArray replaceObjectAtIndex:1 withObject:tempDict];
    

    【讨论】:

      【解决方案3】:

      如果数组中的对象是可变的(例如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 记录来查找值,就这么说吧,因为那时代码会有所不同。

      【讨论】:

        【解决方案4】:

        一旦你得到对象的索引,你应该替换你的对象。

        [arrayOfData replaceObjectAtIndex:yourIndex withObject:yourObject];
        

        【讨论】:

        • 你的对象是什么?
        • 这将是您的 dict 具有 Id,Name 的对象
        【解决方案5】:

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

        [mutableArray replaceObjectAtIndex:index withObject:mutableCopiedObj];
        

        希望有帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-20
          • 2020-08-19
          • 1970-01-01
          相关资源
          最近更新 更多