编辑上下文中的所有实体
Posted
技术标签:
【中文标题】编辑上下文中的所有实体【英文标题】:Edit all entities in context 【发布时间】:2015-11-09 22:14:09 【问题描述】:我对使用 Magical Record 更改所有记录的某些属性时的最佳做法有疑问。
我发现的唯一方法是获取保存块中的所有实体并在逐个枚举之后。有更好的解决方案吗?
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext)
NSArray * devices = [CDDevice MR_findByAttribute:@"primary" withValue:@"YES" inContext:localContext];
[devices enumerateObjectsUsingBlock:^(CDDevice * device, NSUInteger idx, BOOL * _Nonnull stop)
CDDevice * tmpDevice = [device MR_inContext:localContext];
tmpDevice.primary = @(0);
];
completion:^(BOOL contextDidSave, NSError *error)
;
];
有点像
[CDDevice MR_ChangeAtribute:"primary" toValue:@(0)];
所有 CDDevice 记录的更改主要更改为 YES。
【问题讨论】:
【参考方案1】:这是核心数据方式。获取、更改、重复。
但是,如果您有很多事情要做,您应该将它们全部包装在一个自动释放池中,并分小批进行,然后将每个批次的对象转回故障。这可以防止内存爆炸。
但是,您可以通过使用 NSBatchUpdateRequest
来避免所有这些。
我没有使用 MR,但是通过谷歌快速搜索发现了这个链接,标题为“Add support for magical batch requests”。
但是,这组功能的提交似乎相对较新(10 月 10 日提交),因此您必须自己做一些工作,看看它是否已成为正式版本......或者是否您想使用预发布版本。
【讨论】:
以上是关于编辑上下文中的所有实体的主要内容,如果未能解决你的问题,请参考以下文章