【问题标题】:Magical Record save in background神奇的记录保存在后台
【发布时间】:2013-01-05 17:29:05
【问题描述】:

我正在使用 Magical Record 框架来保存用户设置。现在,我第一次想将东西保存在后台线程中。在 Magical Record 的 github 页面上有一个示例 sn-p 我不完全理解:

Person *person = ...;
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){

    Person *localPerson = [person MR_inContext:localContext];

    localPerson.firstName = @"John";
    localPerson.lastName = @"Appleseed";

}];

为什么需要第一行?我不能完全在块中创建 Person 吗?谢谢!

【问题讨论】:

    标签: ios xcode multithreading core-data magicalrecord


    【解决方案1】:

    Magical Record 的保存和获取是基于上下文的。因此,您可以在默认上下文中创建记录,也可以使用 MR_createInContext 方法在新上下文中创建记录。但是,在获取记录时,上下文应该与您创建的相同。

    http://pthiaga.blogspot.in/2014/11/running-database-fetch-core-data-in.html

    【讨论】:

      【解决方案2】:

      当然可以。此示例仅从外部上下文(您的默认对象或其他)中获取一个 person 对象,并在 localContext 中为您提供指向它的指针,以便您可以在后台对其进行更新。如果您要从头开始创建person,您可以执行以下操作:

      [MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){
      
          Person *localPerson = [Person MR_createInContext:localContext];
      
          localPerson.firstName = @"John";
          localPerson.lastName = @"Appleseed";
      
      }];
      

      你已经完成了。

      PS。请注意,MR_createInContext: 是在Person 类上调用的类方法(而不是在person 实例上调用的MR_inContext: 实例方法)。

      【讨论】:

      • 如我所见,我上面写的方法似乎已被弃用,我应该使用什么方法在后台保存?列出了几个“新”方法,但没有一个名称中有“背景”。
      • @LinusAn 这取决于您使用的 MagicalRecord 版本。你可以查看他们的github repo here(我相信saveWithBlock:是v3.x中的类似方法)
      • 啊,非常感谢!那我就用那个。我不知道 v3 已经出来了,我最好去买最新版本。
      • 当我使用 saveWithBlock 时,嗯,奇怪的控制台日志:-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:](0x1f091a00) **未命名**上下文没有变化 - 没有保存
      • 你确定你已经创建了这样的实体:[Person MR_createInContext:localContext]; 在块内? (另外,很抱歉 v3.x 的事情,这是下一个要发布的主要版本。目前稳定的是 2.1)
      【解决方案3】:

      是的,您也可以在块中创建人。 inContext: 方法仅在您从不同的上下文中获取例如 Person 时才需要。 请注意,如果您在块中创建 Person,那么您应该使用 createInContext: 方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-14
        • 2014-02-24
        • 2014-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多