2013-10-30 49 views
2

我已經設置了AFIncrementalStore以通過網絡從JSON服務中獲取對象,並將其persistentStore設置爲SQLite數據庫。這一切工作正常。我可以「手動」將項目插入AFIncrementalStore的緩存嗎?

現在我想要做的是將對象添加到帶外的SQLite數據庫(從AFIncrementalStore指向的Web服務以外的其他位置),並將這些添加項反映在從原始託管對象上下文。

我創建了一個託管對象上下文,原始MOC作爲它的父項,我可以將對象添加到該對象中,並由讀取的結果控制器查看它們。但它們不會保存到AFIncrementalStore的SQLite數據庫中。有趣的是,AFIncrementalStore是看到這些對象,因爲它試圖將它們保存回JSON服務,並抱怨正確的端點不存在(我通過重寫requestForInsertedObject:insertedObject返回nil固定這一點。)

任何人都知道我是如何做到這一點?

回答

0

如果你不想要張貼的對象,你必須重寫方法

requestForInsertedObject:insertedObject 
requestForUpdatedObject:updatedObject 
requestForDeletedObject:deletedObject 

然後當你調用上下文的保存服務器:你的方法對象必須被保存在數據庫中。我在離線執行CRUD操作時使用類似的邏輯,並且工作正常。

0

這聽起來像你已經找到了答案的大部分。 AFIncrementalStore檢查您的AFRESTClient子類中的requestForInsertedObject:的零響應。如果該方法返回nil,AFIS會爲該對象創建一個永久ID,將該對象存儲在後備存儲中,並且不會嘗試再次將其發送到服務器。這全部在executeSaveChangesRequest:withContext:error:的第一部分。

您是否總是在父級ManagedObjectContext上調用​​?如果沒有,這將是它不存儲SQLite中的對象的另一個原因。但是,它不應該試圖將對象發佈到服務器。

相關問題