0

我正在构建基于 AFNetworking 和 MagicalRecord 的新闻应用程序。我必须与 à 服务器执行 à 后台同步,以便 1)检索现有类别 2)为每个类别检索所有文章。

所以我使用了一个 nsoperationqueue,我在其中添加了我需要的所有 afnetworking 操作。我正在创建一个调度队列并将其设置为所有 afnetworking 操作的成功队列,因此完成块不会在主线程中执行。

在同步结束时,我正在执行保存,因此所有数据都保存在perisitent 存储中。

我遇到以下问题: 无法建立关系,因为文章和类别是在不同的线程中创建的:我总是有一个例外。我应该何时以及如何保存我的核心数据对象?在阅读了数千篇关于magicrecord的文章后,我完全迷失了这一点。

感谢这个精彩网站的所有 ios 大师 :)

4

1 回答 1

0

终于,我明白了我做错了什么。

在单独的线程中使用 MagicalRecord 是重点,因为 MagicalRecord 会为不同的线程创建不同的 NSManagedContext。

在深入阅读了有关 CoreData 和多线程的 Apple 文档后,我指出,如果您可以确保不会同时影响任何对象,则可以在同一个 NSManagedContext 上完成不同线程的工作。

因此,通过使用带有专用和单个 NSManagedObjectContext 的顺序 dispatch_queue,它完成了这项工作。

希望这可以帮助其他人。

于 2013-08-19T07:14:50.220 回答