core data淺析

Core data 淺析sql

   相似於以前使用過的FMDB,是蘋果自帶的,管理數據庫的工具。數據庫

 

   使用緣由:xcode

它能讓你爲model層寫的代碼更簡潔,無需優化,無需測試。安全

 

 Core data ide

能利用model層的信息和運行時的特性,而不是經過過程層的代碼實現的。 函數

除了能提供強大的安全支持和錯誤處理外,它還提供了最優的內存擴展性,可實現有競爭力的解決方案。工具

主要是iOSsqlite數據庫的封裝。 測試

有對象一一關係的映射功能,能把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];

相關文章
相關標籤/搜索