Core data 淺析sql
相似於以前使用過的FMDB,是蘋果自帶的,管理數據庫的工具。數據庫
使用緣由:xcode
它能讓你爲model層寫的代碼更簡潔,無需優化,無需測試。安全
Core data ide
能利用model層的信息和運行時的特性,而不是經過過程層的代碼實現的。 函數
除了能提供強大的安全支持和錯誤處理外,它還提供了最優的內存擴展性,可實現有競爭力的解決方案。工具
主要是iOS對sqlite數據庫的封裝。 測試
有對象一一關係的映射功能,能把oc的對象存儲成數據庫或xml等。優化
讀取時不須要使用sql語句。spa
誤解:
不是關係型數據庫,也不是關係型數據庫管理系統(RDBMS),core data爲數據變動管理,對象存儲,對象讀取恢復功能提供了支持。它能夠使用sqlite作爲持久化存儲的類型、它自己不是一個數據庫。
代碼步驟:
1.導入庫<core data.framework> 和 <core data/core data.h >
2.這樣託管對象模型知道全部當前工程中用到的託管對象的定義,建立一個NSmanaged ObjectModel數據模型文件
1>建立數據模型文件->new file ->core data ->選中data model,建立文件(user.xcdatamodeld)
2>建立跟數據模型文件關聯的數據模型類,new file ->core data ->選中NSManaged object of subclass ->關聯上user.xcdatamodeld數據模型文件中的usermodel
3.(用代碼初始化coredata)
1>導入<core data/core data.h >
2>從沙盒包內 讀取數據模型文件
A.獲取到coredata文件的路徑,並轉化爲URL
//在包內user.xcdatamodeld會轉化爲user.momd
路徑:NSString *coredatapath = [[NSBundle mainBundle] pathForResource:@」user」 ofType:@」momd」];
加載文件中數據:
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfUrl:[NSUrl fileUrlWithPath:coredatapath]];
b.NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundels:nil];中nil表示鏈接項目中全部的.xcdatamodeld文件爲一個datamodel這是一個很是好的方法,把多個entity放在各自的xcodemodel文件中分開管理,而後用這個函數鏈接起來生成一個datamodel,這樣就能夠對應一個persistentstore
3>建立協調器
NSPersistentStoreCoordinator *coordinator =[ [NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
4>將coreData數據映射到數據庫
1.找到數據庫路徑(並建立該文件)
NSString *path = [NSString stringWithFormat:@」%@/Documents/user.sqlite」,NSHomeDirectory];
2.將數據庫和模型文件關聯上
NSPersistentStore *store = [coordinaor addPersistentStrore withType:NSSqlitestore TypeConfiguration:nil URL:[NSURL fileURLWithPath:path] option:nil error:nil];
5> 建立上下文託管對象,增刪改查,經過上下文對象操做的
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
context.persistentStoreCoordinator = coordinator;
Magocal Record 第三方庫
做用:專門操做coredata
步驟:
1>初始化操做,建立數據模型文件
2>根據數據模型文件建立關聯的數據模型類
1.導入頭文件<magicalRecord.h>
2.在APPDelegate中初始化數據庫
[MagicalRecord setUpCoreDataStackWithAutoMogratingSqliteStoreNamed:@」sqlite」];
3.增刪改查
增:根據coredata模型建立對象
Eg. UserModel *item = [UserModel MR_createEntity];
存到數據庫
[[NSManagedObjectContext MR_defaultContext] MR_saveTopersistentStoreAndWait];