【问题标题】: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。

【问题讨论】:

    标签: ios core-data magicalrecord


    【解决方案1】:

    这是核心数据方式。获取、更改、重复。

    但是,如果您有很多事情要做,您应该将它们全部包装在一个自动释放池中,并分小批进行,然后将每个批次的对象转回故障。这可以防止内存爆炸。

    但是,您可以通过使用 NSBatchUpdateRequest 来避免所有这些。

    我没有使用 MR,但是通过谷歌快速搜索发现了这个链接,标题为“Add support for magical batch requests”。

    但是,这组功能的提交似乎相对较新(10 月 10 日提交),因此您必须自己做一些工作,看看它是否已成为正式版本......或者是否您想使用预发布版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      相关资源
      最近更新 更多