這幾天複習了一下coredata的內容,發現這個東西挺不錯。但要掌握的話還需要一定時間積累。參考ios 的開發指南,裡面講解了這部分介紹,內容也值得參考。對於ios 的資料持久化,提供了好幾個方案。如plist,sqllite,coredata 。plist用得比較廣,在建立工程專案就有,所以這個應該很容易理解。sqllite 小型的資料庫,需要有一些sql的知識點。coredata 就是將sqllite這種操作簡化成一種物件關係對映。
今天還沒準備敲打**。先和上次textkit記錄幾個關鍵字的類。
nsmanagedobjectcontext 被管理物件上下文
nsmanagerdobjectmodel 被管理物件的模型
nspersistentstorecoordinator 持久化儲存協調器
nsentitydescription
nsfetchrequest
nspredicate
學習過資料庫的操作,經常會有四種是我們常用的動作。插入,刪除,修改,查詢 。這四個就是我們使用時候需要構建的物件了。有了這個模式,使用的時候就可以參考這套路來實現這些操作。
insertobject
removeobject
modifyobject
findallobject
nsstring *documentdirectory = [nssearchpathfordirectoriesindomain(nsdocumentdirectory,nsuserdomaininmask,yes) lastobject];
nsurl *modelurl = [nsbundle mainbundle] urlforresource:@" withextenstion:@"momd"];
nsmanagedobjectcontext *cxt = [self managedobjectcontext];
nsmanagedobject *note = [nsentitydescription
insertnewobjectforentityforname:@"book"
inmanagedobjectcontext:cxt];
];
在建立專案下可以勾選coredata 的選項會對其生成相應momd 和 sqlite的檔案,你會發現當你不勾選然而還得想手動新增兩個檔案 則還需要一定工序來完成。在cmd +n 快捷鍵開啟 可以 裡面有coredata 的選項,裡面生成momd的檔案,但是發現還沒生成sqlite檔案。於是使用檔案操作來完成這個檔案部署。nsfilemanager的createfileatpath的方法來實現sqlite檔案的操作。這個是建立檔案的乙個常用操作。
在使用coredata 的時候 突然碰到了 unrecognized selector sent to instance 的問題,好奇怪,大部分部落格裡面說是物件被釋放掉引起了,前段時間使用音訊服務也試過這樣一回事。宣告了物件,外部引用後物件就沒那麼快釋放掉。這個坑還是第一次遇到,發現在coredata 乙個插入的操作卻引起這樣的問題還是不理解是什麼原因。對著書敲打一篇案例發現會遇到這樣奇怪的問題還是對一些蘋果記憶體機制不理解產生疑惑。
明天繼續修改這部分內容。
蘋果開發 筆記(9)
今天書寫的內容不多一直在徘徊緊。早上接觸了git,申請了乙個賬號。以後的 都可以那邊託管一下。將昨天寫到的 模板也看了一下,原來自定義的 模板放置在這裡使用mac 前往資料夾功能即可跳轉到對於的資料夾 library developer xcode userdata codesnippetsxcod...
蘋果開發 筆記(17)
第一次在建立專案 勾選 coredata 的選項會生成一些coredata 的相關的api 類。這些類會記錄在 那裡。從 那裡找到獲取到 nsmanagedobjectcontext 的上下文。想起這個上下文,包括繪圖也有類似。先獲取到對應的類,下面就可以做出相應的事情。例如乙個是建立的動作,乙個獲...
蘋果開發 筆記(22)
今天繼續練習,重新去理解一下動態識別的應用。平時我們經常判斷乙個物件是不是所屬的類或者子類 可以通過is 的方法去完成。這個是swift提供的乙個方法。oc則提供豐富的方式來判斷,大部分功能整合在nsobject可見。可以說nsobject 責任非常重。方法名作用 ismemberofclass 檢...