将一个Object替换为另一个Object并保存在核心数据中

时间:2014-02-24 18:02:44

标签: ios iphone objective-c core-data nsobject

我正在尝试更新我在coredata中的NSObject类值但是我不确定如何只更新整个对象。这就是我想要做的事情

for (Items *item in mutableArrayOfSet) {
        if ([updatedItem.rowID isEqualToString:item.rowID]) {

            item = updatedItem;
   }
}

item是我的非upated Item和updatedItem属于同一个NSObject类类型,我试图用它来覆盖集合中的当前项目...但是这行代码

item = updatedItem;

发出错误。

  

默认情况下,无法在ARC中修改快速枚举变量;声明变量__strong以允许此

3 个答案:

答案 0 :(得分:1)

  

item = updatedItem;

这只是设置迭代变量的值,它不会改变mutableArrayOfSet的任何内容。

您应该做的是在迭代时创建一组更改,然后在迭代完成后将这些更改保存到源对象中。

答案 1 :(得分:0)

您可以做的是不使用快速枚举。使用普通for循环:

for (int i=0; i<mutableArrayOfSet.length; i++)
{
     item = [mutableArrayOfSet objectAtIndex:i];
     ....
     [mutableArrayOfSet replaceObjectAtIndex:i withObject:updatedItem];
}

答案 2 :(得分:0)

为什么不按编译器的建议去做?

for (__strong Items *item in mutableArrayOfSet) {
        if ([updatedItem.rowID isEqualToString:item.rowID]) {

            item = updatedItem;
   }
}