ios - 如何在不使用 contextForCurrentThread 的情况下使用 Magical Record 创建和更新对象并保存它们

标签 ios core-data rubymotion magicalrecord

我刚刚在 Why contextForCurrentThread Doesn't work in MagicalRecord 上阅读了 MagicalRecord 博客文章的作者.

contextForCurrentThread 已弃用,应改用 saveWithBlock,因为它会为相关线程创建安全的新 NSManagedObjectContext

到目前为止,我一直在我的应用程序中大量使用 contextForCurrentThread。但是,我无法弄清楚如何使用 saveWithBlock 来代替,因为我的提取和保存不一定按顺序发生。

目前我正在做这样的事情:

localContext = NSManagedObjectContext.MR_contextForCurrentThread
person = Person.MR_createInContext(localContext)
person.name = "John Smith"

然后用户可以浏览应用程序,显示不同的 Controller 、 View 等。可以使用与上述代码类似的方法创建其他对象。

然后在未来的某个任意点,当用户决定保存时,我运行这个方法:

localContext = NSManagedObjectContext.MR_contextForCurrentThread
localContext.MR_saveToPersistentStoreWithCompletion(
  lambda { |success, error|
    # ...
  }
)

在不使用 contextForCurrentThread 的情况下创建和更新对象然后保存它们的推荐方法是什么?

最佳答案

这是一个新的 api 教程:http://ablfx.com/blog/article/2 这是引用文献:http://cocoadocs.org/docsets/MagicalRecord/2.1/

  1. 初始化

    [MagicalRecord setupCoreDataStackWithStoreNamed:@"MyDatabase.sqlite"];

  2. 释放

    [MagicalRecord 清理];

  3. 插入

    Person *alex = [Person MR_createEntity]; alex.name = @"亚历克斯"; alex.age = @23;

  4. 选择

    /检索 NSManagedObject 子类的所有内容 NSArray *people = [Person MR_findAll];

    //获取第一条记录 Person *aPerson = [Person MR_findFirst];

    //条件检索记录&排序 NSArray *people = [Person MR_findByAttribute:@"name"withValue:@"alex"andOrderBy:@"age"ascending:YES];

  5. 更新

    //更新检索到的实体就像操作它的属性一样简单 aPerson.age = @56;

  6. 删除

    //移除所有记录 [Person MR_truncateAll];

    //删除单条记录,取回后 [alex MR_deleteEntity];

  7. 保存

    //对于任何要在磁盘上实际保存/更新/删除的实体调用以下方法 [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

    //再次检查 MagicalRecord 存储库以获得更多保存选项

关于ios - 如何在不使用 contextForCurrentThread 的情况下使用 Magical Record 创建和更新对象并保存它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19251246/

相关文章:

ios - 将 NSArray 传递给函数的 Objective-C 错误

ios - 从核心数据和 TableView Controller 创建 PDF 文档

iOS8 在 [GAIDataStore 保存] 中卡住

iphone - UITableviewCell 中的 UILabel 动态高度行为不稳定

ios - 将列添加到 Rubymotion Tableview

iOS 后台传输使用 NSURLSession

ios - 两次之间的分钟数

ios - 支持所有 iPhone 设备所需的图像尺寸

ios - 在 CoreData 中安全地加密和存储密码

ios - RubyMotion 中的 CDQ 权限错误