天天看點

《Core Data應用開發實踐指南》一2.11 建立托管對象

本節書摘來自華章出版社《core data應用開發實踐指南》一書中的第2章,第2.11節,作者 (美)tim roadley,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

所有事情都準備好之後,現在就可以建立一些托管對象了。新對象是由nsentity-description按照指定的名稱并根據某個特定的實體而建立出來的。除了要指定對象所依據的實體之外,還需提供指向托管對象上下文的指針,建立好的托管對象将會放在那個上下文裡面。在application delegate中,可以通過[self cdh]或_coredatahelper的context特性來獲得這個上下文。

程式清單2-3示範了如何根據實體來建立托管對象,并将其插入上下文。要完成這項操作其實很簡單,隻需要調用nsentitydescription類的insertnewobjectfor-entityforname方法,并把适當的實體名稱及指向上下文的指針傳進去即可。

根據item實體建立好托管對象之後,就可以直接用代碼來操作它的值了。程式清單2-3底部的nslog指令就說明了這一點:我們能夠把newitem.name當作字元串變量傳給nslog。在操作對象的時候,通過“點”(.)來通路其特性是一種很清晰的寫法,可以令代碼更易讀懂。

《Core Data應用開發實踐指南》一2.11 建立托管對象

請按下列步驟修改grocery dude,以便向上下文中插入托管對象:

把#import "item.h"語句添加到appdelegate.m檔案頂部。

修改appdelegate.m中的demo方法,把程式清單2-3中的代碼置于方法體的底部。

運作應用程式之後,就應該能在控制台中看到這些托管對象的名字了。core data已經成功運作起來了,你是不是該鼓勵一下自己呢?程式運作效果如圖2-6所示。

《Core Data應用開發實踐指南》一2.11 建立托管對象

在給項目添加了某些屬性之後,下次啟動程式時可能會出現“the model used to open the store is incompatible with the one used to create the store.”(打開存儲區時所用的模型與建立存儲區時所用的不符)錯誤。假如真的碰到了這個錯誤,請你在模拟器或手機中删除該應用程式,然後重新運作項目,這樣就能裝好一份新的程式了。如果還是報錯,那麼可以點選xcode的product>clean菜單項。到了第3章,我們會講解一套優雅的模型更新方案,并把它實作出來。