概括:
我們先說說這兩個東西,CoreData 和 FMDB,其實就我自己而言覺得這兩個都不錯,剛開始是接觸FMDB的,CoreData是工作后自己看的。蘋果推薦開發者去使用CoreData,但 FMDB 在 git 上的那上萬顆星星也說明了開發者對它的喜愛。在開發中你要是只是使用一張表去存儲一點簡單的東西,使用FMDB也方便,可是一旦表與表之間產生屬性關聯的話,用FMDB就比較的麻煩了。但用 CoreData 就比較的容易。
再說說今天我們想說的,也是我看其他人的博客學到的,給大家分享出來。關聯數據庫和視圖,簡單的想一下這么一個場景。在一個tableView里面,tableView的數據源是表里面數據的條數,你通過表里面數據的條數去控制tableView的顯示!在CoreData中 有一個控制器 NSFetchedResultsController專門為了關聯數據庫和視圖而生的,這個Demo是寫好了的,需要的留言告訴我我發給你。
CoreData的使用:
下面是我學習的鏈接,也給大家:
iOS中CoreData數據管理系列一:初識CoreData
iOS中CoreData數據管理系列二:CoreData框架中三個重要的類
iOS中CoreData數據管理系列四:進行數據與頁面的綁定
注意點和總結的地方:
先把里面會用到的類描述一下,知道它們是用來做什么,對應的都是那些東西。
/** * 先把CoreData里面會用到的類總結一下: NSManagedObjectModel 數據模型管理類對應我們的.xcdatamodeld 文件 NSPersistentStoreCoordinator 相當於數據庫與數據模型之間橋接器,通過它將數據模型存入到數據庫 NSManagedObjectContext 核心的數據庫管理類 開發者通過操作它來執行對數據庫的操作 NSEntityDescription 實體描述,直接點其實就是庫里面的表 NSFetchRequest 查詢請求, 查 刪 改 你都的簡歷請求,找到你要修改的那一條數據 NSPredicate 請求的條件,方法 [NSPredicate predicateWithFormat:@"stuNum == 20"] 意思是建立一條 stuNum = 20 的查詢條件 */
其次就是學習使用CoreData的時候可能會有疑惑的地方:
NSURL * modelurl = [[NSBundle mainBundle]URLForResource:@"CoreDataTest" withExtension:@"momd"]; // 獲取創建的caredata 文件 NSManagedObjectModel * mom = [[NSManagedObjectModel alloc]initWithContentsOfURL:modelurl];
上面是創建 NSManagedObjectModel 類的代碼,注意第一句的 @“CoreDataTest” 是你 CoreData文件的名字,后面的 @“momd”, 是你的.xcdatamodel文件,用數據模型編輯器編輯編譯后為.momd或.mom文件,所以就寫@“momd”,可能會有人疑惑那是什么吧,順便也說一下。
實現上面提到的:
就不大段大段的粘貼代碼上去了,封裝到了不同的控制器寫的,粘貼復制就不太好了,你要覺得有需要可以留留言給我,我發給你!
FMDB:
我自己用着FMDB感覺一切還好,除了每次一懵逼,找找SQLite語句。
它的使用,網上真的是一大把,我就不再重復啰嗦了。把FMDB官方的解釋中文版鏈接給大家,有時間還是看看吧,畢竟不是每個人都知道官方解釋說了什么。說不定就有遺落了的知識。
有一點你知道嗎?后面是一條創建 bulktest1 表的SQLite語句:@"create table bulktest1 (id integer primary key autoincrement, x text);"
后面的屬性肯定不是我們描述的重點,前面的 id integer primary key autoincrement 知道是做什么的嗎?如果你也不太清楚地,知識點鏈接在下面,看看至少知道這條語句說的是什么意思。
Sqlite中INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用
上面說了這些,還是那句兩個都不錯,所以兩個都學學,挺好!需要上面Demo就留言Q我,我發給你!