在Core Data中,您可以在从数据库检索其他数据的同时插入数据吗?

22 浏览
0 Comments

在Core Data中,您可以在从数据库检索其他数据的同时插入数据吗?

我一直在我的iOS应用程序中使用SQLite来保存数据(最多有20,000行的表)。然而,我在使用SQLite时遇到了一个问题,即当我尝试在插入数据到表中时使用SELECT语句,SELECT语句无法正常工作。\n在Core Data中是否可以像这样工作?我能在插入新数据的同时从数据库中检索数据吗?

0
0 Comments

在Core Data中,可以同时进行查询和插入操作,这通常需要在多个线程上进行操作。解决这个问题的最佳方法是为每个线程(或队列)创建一个NSManagedObjectContext。

我会这样设置:在主线程(UI线程)上有一个专门用于获取数据的NSManagedObjectContext,还有一个在单独的线程上用于插入数据的NSManagedObjectContext,其父上下文设置为主上下文。这样,当在子上下文中保存数据时,您将在主上下文中看到这些新对象,并且您可以进行新的查询(或者如果您使用了NSFetchedResultsController,它将为您更新)。

关于parentContext的详细信息可以参考WWDC 2011关于Core Data的视频。

解决方法参考链接:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdConcurrency.html#//apple_ref/doc/uid/TP40003385

0