小编Che*_*ery的帖子

具有并发性的魔法记录

在使用Core Data和Magical Record工作了一段时间并且出错之后,我正处于开发iOS应用程序的过程中:

错误:NULL _cd_rawData但该对象未被转换为错误

我在这个项目之前并不知道Core Data,因为事实证明我很天真地认为我可以使用Magical Record而不用担心并发性,因为我没有专门针对主线程的任何关于托管上下文的想法/工作和背景线程.

在大量关于核心数据管理对象上下文和魔法记录的阅读之后,我理解:

  • NSManagedObjects不是线程安全的.
  • NSManagedObjectId是线程安全的.
  • 我可以使用:Entity *localEntity = [entity MR_inContext:localContext]Magical Record在后台线程的上下文中使用实体.
  • 我应该使用Magical Record saveWithBlock:completion:saveWithBlockAndWait:方法来获取用于后台线程的托管上下文.

关于我的申请的一些信息:

  • 我正在使用最新版本的Magical Record 2.2.
  • 我有一个后端服务器,我的应用程序谈了很多.
  • 他们的通信类似于Whatsapp,因为它使用后台线程与服务器通信并在成功响应时更新托管对象.
  • 我正在使用DataModel对象包装模型,这些对象将托管对象保存在数组中,以便快速引用UI /后台使用.

现在 - 我的问题是:

  1. 我应该只从UI线程获取?我可以在DataModel对象中保存托管对象吗?
  2. 如何从后台线程创建新实体并在DataModel对象中使用新创建的实体?
  3. 我应该使用最好的设计方案吗?特别是在向服务器发送请求并获得响应时,我应该创建一个新的托管上下文并在整个线程的活动中使用它吗?

如果一切都清楚,请告诉我.如果没有,我会尝试增加清晰度.

任何帮助或指导将不胜感激.

谢谢!

multithreading ios magicalrecord

1
推荐指数
1
解决办法
2018
查看次数

标签 统计

ios ×1

magicalrecord ×1

multithreading ×1