将一个 NSObject 替换为另一个并保存在 coredata 中

Posted

技术标签:

【中文标题】将一个 NSObject 替换为另一个并保存在 coredata 中【英文标题】:Replace one NSObject with another and save in coredata 【发布时间】:2014-02-24 18:02:44 【问题描述】:

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

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

            item = updatedItem;
   

item 是我未更新的 Item 并且 updatedItem 是相同的 NSObject 类类型,我试图用它来覆盖集合中的当前项目......但是这行代码

item = updatedItem;

给出一个错误。

快速枚举变量在ARC中默认是不能修改的;声明变量 __strong 以允许这样做

【问题讨论】:

【参考方案1】:

项目 = 更新项目;

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

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

【讨论】:

【参考方案2】:

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

for (int i=0; i<mutableArrayOfSet.length; i++)

     item = [mutableArrayOfSet objectAtIndex:i];
     ....
     [mutableArrayOfSet replaceObjectAtIndex:i withObject:updatedItem];

【讨论】:

【参考方案3】:

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

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

            item = updatedItem;
   

【讨论】:

以上是关于将一个 NSObject 替换为另一个并保存在 coredata 中的主要内容,如果未能解决你的问题,请参考以下文章

c语言:如何将字符串中指定的字符替换为另一个指定字符

根据条件将数组的元素替换为另一个数组的元素

c语言:如何将字符串中指定的字符替换为另一个指定字符

jQuery:向下滑动并以特殊方式将一个背景图像替换为另一个背景图像

将查询参数替换为另一个值/标记

我如何过滤掉 NaN 值并将其替换为另一个值