Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在核心数据中,能否在从数据库检索其他数据时插入数据?_Iphone_Objective C_Sqlite_Core Data - Fatal编程技术网

Iphone 在核心数据中,能否在从数据库检索其他数据时插入数据?

Iphone 在核心数据中,能否在从数据库检索其他数据时插入数据?,iphone,objective-c,sqlite,core-data,Iphone,Objective C,Sqlite,Core Data,可能重复: 我一直在使用SQLite在iOS应用程序中保存数据(对于最大行数超过20000行的表)。但是,我在SQLite中遇到了一个问题,当我在向表中插入数据时尝试使用SELECT语句时,SELECT语句将无法工作 在核心数据中会有类似的工作吗?我可以在向数据库中插入新数据的同时从数据库中检索数据吗?是的,您可以同时对核心数据执行查询和插入,我假设您希望在多个线程上执行此操作。最好的方法是为每个线程(或队列)提供一个NSManagedObjectContext 我设置它的方法是让您的主线程(

可能重复:

我一直在使用SQLite在iOS应用程序中保存数据(对于最大行数超过20000行的表)。但是,我在SQLite中遇到了一个问题,当我在向表中插入数据时尝试使用
SELECT
语句时,
SELECT
语句将无法工作


在核心数据中会有类似的工作吗?我可以在向数据库中插入新数据的同时从数据库中检索数据吗?

是的,您可以同时对核心数据执行查询和插入,我假设您希望在多个线程上执行此操作。最好的方法是为每个线程(或队列)提供一个NSManagedObjectContext

我设置它的方法是让您的主线程(UI)有一个NSManagedObjectContext,只用于获取数据,还有一个用于插入到单独的线程上,其parentContext设置为主线程。这样,当您在子上下文中保存时,您将在主上下文中看到这些新对象,并且您可以执行新的获取(或者,如果您有一个NSFetchedResultsController,它将为您更新它)


WWDC 2011关于核心数据的视频详细介绍了parentContext。

速度差异:CoreData应该慢一点,因为它是围绕Sqlite3的OO(ObjC)包装。否则:SQLite不允许您(AFAIK)同时插入和获取数据。无论如何,你为什么想要这个呢?对于重播,我有一个音乐应用程序,我可以从网络服务下载数据(歌曲详细信息)(每次最多500首)。当我有2页(1000首歌曲)要从服务中获取时,我会先插入前500行,然后在第二次插入时,我会再次插入,这一次我无法在表上进行任何选择,从表中获取专辑、艺术家、流派。因此,我想使用CoreData,并想知道两者的区别。我重写了这个问题,以关注您的核心问题:您能否在core data中同时读取和写入数据库中的数据。询问SQLite和核心数据之间的所有差异是一个过于宽泛的主题,Jason链接的问题已经涵盖了其中的大部分内容。