0

所以我有一个奇怪的情况。

当我重新安装我的应用程序的开发版本时,我创建了一个 CoreData 数据库。在我的应用程序启动序列的其他地方,我尝试了一个简单的NSPredicate过滤获取请求。

通常(不是每次),第一次获取都会无限期地阻塞,并且应用程序需要重新启动才能正常继续。

我似乎无法弄清楚如何处理这个问题,而且由于我无法可靠地重现这个问题,所以每次我做一些我认为可行的事情时,后来发现它没有任何帮助。

对此有什么想法吗?

4

1 回答 1

3

在 iOS 中使用 Core Data 的一个好方法是将创建和所有访问放在调度队列后面。因此,您在初始化例程中创建一个串行调度队列,然后通过向该队列调度块来创建和填充它。由于队列是串行的,因此您显然可以异步执行所有操作。也以这种方式进行获取,然后当它成功时,您可以将一些消息发布到主队列,并且您的应用程序委托该应用程序已准备好运行。

当您的应用程序启动并需要设置核心数据时,设置一些标志,然后阻止 UI,抛出一个微调器,播放音乐(无论如何),直到您取回该数据。

于 2012-08-17T20:02:41.907 回答