是否有核心数据中所有实体的批量更新操作?

Jam*_*ore 4 iphone core-data

在iPhone上,Core Data是否有办法为其存储的实体的每个实例批量更新字段?就像是

更新some_entities设置some_count = 0,其中some_count> 0

或者我只需要实例化每个实体,设置值,然后保存它?(如果这就是答案,我怎么能在单个事务中做到这一点,假设该集合太大而不适合内存?)

ger*_*ry3 7

Core Data不提供此功能,但您可以使用makeObjectsPerformSelector:withObject:Core Data托管对象的NSSet或NSArray方法.
将setter访问器作为选择器传递,将值作为对象传递.

例如,如果托管对象具有需要为所有设置相同的属性"名称":

[[fetchedResultsController fetchedObjects] makeObjectsPerformSelector:@selector(setName:) withObject:@"name for all"];
Run Code Online (Sandbox Code Playgroud)

您不必拥有NSFetchedResultsController.您可以使用NSFetchRequest中的数组,甚至可以从Core Data实体之间的多对多关系中使用NSSet.