将一个 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 中的主要内容,如果未能解决你的问题,请参考以下文章