我有一個應用程序,其中已具有工作核心數據和持久性存儲功能。我想在這個應用程序中使用DATAStack,但我無法使它工作。帶有工作核心數據的現有應用程序中的DATAStack庫
沒有DATAStack我有這些標準的核心數據lazy var
s在我的AppDelegate
。在我的ViewController
中,我檢索到managedObjectContext
,如下所示:let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
。將moc
變量傳遞給需要處理存儲的函數,並將其稱爲moc.save()
。我知道這是有效的,因爲我還檢索並顯示屏幕上存儲的條目,這也可以在完全關閉應用程序後生效。我用sqlite數據庫查看器(SQLPro for SQLite Read-Only)檢查sqlite數據庫。
現在用DATAStack,我在我的AppDelegate
中添加了一個新行:lazy var dataStack: DATAStack = DATAStack(modelName: "Database")
。我的數據庫模型的名字確實是Database.xcdatamodeld
,所以初始化應該是正確的。在我的ViewController
中,我用let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).dataStack.mainContext
替換了上述var moc = ...
。這個moc
變量再次被傳遞,我把moc.save()
稱爲moc.save()
,但現在它不存儲任何東西。正如我所描述的那樣,唯一改變的是管理對象上下文的來源。
我必須錯過這個圖書館的東西,但我不知道我錯過了什麼。
我也看過一個Sync example(Sync使用DATAStack),但dataStack
對象檢索以完全不同的方式。