EverBox开发笔记-4-如何使用Core Data
?
在這里有篇新手教程,教你怎么在iOS中使用Core Data。
教程寫的不錯(cuò),非常詳細(xì), 通過這個(gè)例子,可以看到在iOS下使用Core Data存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)是多么容易,Core Data隱藏了數(shù)據(jù)存儲(chǔ)的細(xì)節(jié),在應(yīng)用層上,開發(fā)者只需:
1,這可以通過圖形化的工具來建立數(shù)據(jù)結(jié)構(gòu)和描述,Core Data中稱為實(shí)體——Entity。
2,為這個(gè)實(shí)體,從NSManagedObject中子類化一個(gè)對(duì)象(測(cè)試用的是Event對(duì)象),這個(gè)對(duì)象就代表一條數(shù)據(jù)庫(kù)內(nèi)的記錄。
3,添加數(shù)據(jù):
Event *event = (Event *)[NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:managedObjectContext]; [managedObjectContext save:&error]; [eventsArray insertObject:event atIndex:0]; 4,刪除數(shù)據(jù): NSManagedObject *eventToDelete = [eventsArray objectAtIndex:indexPath.row]; [managedObjectContext deleteObject:eventToDelete]; [managedObjectContext save:&error] 5,獲取數(shù)據(jù)也就是從Store中查詢數(shù)據(jù),重點(diǎn)是NSFetchRequest類,以及設(shè)置好它的三個(gè)屬性: 1, entity,從哪個(gè)庫(kù)里查。 2,sortDescriptor,如何排序。 3,predicate,查詢條件。(查詢條件會(huì)最終被翻譯成SQL或其他什么東西,取決于底層用的庫(kù)類型) 6,執(zhí)行查詢: NSError *error = nil; NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];?
最后需要指出一點(diǎn),在創(chuàng)建完界面后,教程讓我們運(yùn)行一下,看看目前為止的成果,但這個(gè)步驟會(huì)引入一個(gè)bug:
當(dāng)你進(jìn)行到下下一節(jié),并運(yùn)行App后,程序會(huì)終止在Appdelegate的persistentStoreCoordinator中并報(bào)錯(cuò):
The model used to open the store is incompatible with the one used to create the store。
作為一個(gè)笨人,首先懷疑自己哪個(gè)步驟做錯(cuò)了,于是對(duì)照教程檢查一遍,沒有發(fā)現(xiàn)問題。
作為一個(gè)笨人,又把教程中的例程運(yùn)行一遍,運(yùn)行正常,沒有發(fā)現(xiàn)問題,于是我就更加相信教程沒錯(cuò)了。
作為一個(gè)笨人,又從字面意思分析:“打開store用到的model,跟創(chuàng)建store用到的model不兼容”,于是將創(chuàng)建的Entity刪除再創(chuàng)建了一遍,運(yùn)行仍然報(bào)錯(cuò)。
作為一個(gè)笨人,終于想到了Google,于是很快找到了解決辦法:刪除App,重新運(yùn)行。
大概猜想一下:按照教程工作到一半時(shí)運(yùn)行App,會(huì)創(chuàng)建store,此時(shí)未創(chuàng)建Entity,但可能會(huì)創(chuàng)建store。接著往下按照教程要求創(chuàng)建Entity后,再運(yùn)行App,這時(shí)打開的舊store就跟新的Entity不兼容了。
轉(zhuǎn)載于:https://www.cnblogs.com/tara/archive/2012/06/29/2570121.html
總結(jié)
以上是生活随笔為你收集整理的EverBox开发笔记-4-如何使用Core Data的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html绘制地铁线路图,地铁线路图怎么画
- 下一篇: 10款超级优雅的Go语言开发工具