2012-04-23 47 views
1

可能重複:
Core Data vs SQLite 3在覈心數據中,您可以在從數據庫檢索其他數據的同時插入數據嗎?

我一直在使用SQLite在我的iOS應用程序中保存數據(表2萬多行的最大值)。但是,我遇到了SQLite的問題,當我在向表中插入數據時嘗試使用SELECT語句時,SELECT語句不起作用。

會這樣的工作在覈心數據?我可以在向數據庫中插入新數據的同時從數據庫中檢索數據?

+0

速度差異:CoreData應該慢一點,因爲它是Sqlite3的一個OO(ObjC)包裝器。否則:SQLite不允許你(AFAIK)同時插入和獲取數據。無論如何,你爲什麼要這麼做? – 2012-04-23 19:45:51

+0

thx爲重播,我有一個音樂應用程序,我從網絡服務(每次最多500)下載數據(歌曲詳細信息)。當我有2頁(1000首歌曲)從服務中獲得我插入第500行,並在第二次我再次插入,在這個時候,我不能讓任何選擇在桌子上獲取專輯,藝術家,流派從這張桌子。所以我想使用CoreData並想知道什麼是差異。 – MTA 2012-04-23 19:50:55

+1

我重寫了這個問題,重點關注你的核心問題:你可以在Core Data中同時讀寫數據到數據庫嗎?要求SQLite和Core Data之間的所有差異都是太廣泛的話題,並且Jason的鏈接所涉及的大部分內容已經涵蓋了。 – 2012-04-23 21:16:33

回答

3

是的,您可以同時在Core Data上進行查詢和插入,我假設您將在多個線程上執行該操作。做到這一點的最好方法是爲每個線程(或隊列)提供一個NSManagedObjectContext。

我設置它的方式是讓您的主線程(UI)具有一個NSManagedObjectContext,用於獲取數據,另一個用於插入單獨的線程,將其parentContext設置爲主線程。這樣,當你保存子上下文時,你會在主要上下文中看到這些新對象,並且你可以做一個新的獲取(或者如果你有一個NSFetchedResultsController,它會爲你更新它)。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdConcurrency.html#//apple_ref/doc/uid/TP40003385

的WWDC 2011關於核心數據視頻談論parentContext的細節。