iOS基本數據庫存儲方式 - CoreData

CoreData數據庫

建立模型文件的過程數組

1.選擇模板框架

2.添加實體編輯器

3.添加實體的屬性【注意】屬性的首字母必須小寫fetch

1、CoreData管理類(必備如下三個類對象)url

1.CoreData數據操做的上下文,負責全部的數據操做,相似於SQLite的數據庫鏈接句柄(NSManagedObjectContext)spa

(1).初始化方式線程

//參數「ct」的類型code

//三種類型orm

/*

     NSConfinementConcurrencyType 默認值,容許在特定的線程中執行,幾乎不用

     NSPrivateQueueConcurrencyType  只會在主線程中執行

     NSMainQueueConcurrencyType 容許在子線程中執行

*/

- (instancetype)initWithConcurrencyType:(NSManagedObjectContextConcurrencyType)ct 

(2).設置持久化存儲協調器(屬性)

persistentStoreCoordinator

 

2.管理模型(NSManagedObjectModel)

(1).通常都須要先獲取獲取模型文件的URL地址

/*

參數一:模型文件的名字

參數二:模型文件的後綴名字

【注意】:後綴名爲.xcdatamodel的包,裏面的.xcdatamodel文件,用數據模型編輯器編輯,編譯後爲.momd或.mom文件

*/

方法:[[[NSBundle mainBundle] URLForResource:(NSString *)name withExtension:(NSString *)ext]

(2).初始化NSManagedObjectModel對象,加載模型文件,讀取App中的全部實體信息

//參數一:該URL即指(1)中的模型文件的url路徑

- (nullable instancetype)initWithContentsOfURL:(NSURL *)url;

 

3.持久化存儲協調器(NSPersistentStoreCoordinator)

(1).初始化方式

- (instancetype)initWithManagedObjectModel:(NSManagedObjectModel *)model 

 

 

說了這麼多,其實以上三個coreData核心對象只要咱們在建立工程時,打上該勾選,Xcode就會幫咱們搭建好框架的,接下來咱們只須要知道怎麼調用

 

【注意】黑色表示類名,紅色表示類裏面的一個屬性方法

 

2、添加數據 : 在上下文中插入一個實體(NSManagedObject)

1.model = [NSEntityDescription insertNewObjectForEntityForName:實體名 inManagedObjectContext:管理實體的上下文];

【注意】該model必須是NSManagedObject的對象,通常模型都繼承NSManagedObject

2.經過Key-Value模式設置插入模型的屬性值

3.將數據同步到持久化存儲庫 : save模型 [NSManagedObjectContext save:nil]; 

 

3、查詢數據

 

1. 指向某個表的請求類

 

//參數entityName:即建立的實體名(在SQLite中稱爲表名)

 

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:(NSString*)entityName];

 

 

 

2. 添加查詢條件

 

(1).條件寫死在字符串中

 

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = 50"];

 

 

 

(2).動態傳值

 

/*

 

%K 查詢的字段

 

%@ 查詢的值

 

*/

 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K = %@", @"age", @(50)];

 

 

 

(3).排序(NSSortDescriptor)

 

//第一步:初始化

 

/*

 

參數一:key值,即排序根據的屬性

 

參數二:NO爲降序,YES爲升序

 

*/

 

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];

 

//第二步:給fetchRequest添加排序方式

 

fetchRequest.sortDescriptors = @[sort];

 

 

 

(4)範圍查詢

 

//範圍運算符(兩種): IN(指定的值)        BETWEEN(開區間)

 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age BETWEEN {15,60}"];

 

 

 

(5).字符串相關查找

 

/*3⃣️

 

    字符串相關:BEGINSWITHENDSWITHCONTAINS

 

    例:

 

    @「屬性名 CONTAINS[cd] ‘包含的字符串’」  // 包含某個字符串

 

    @「屬性名 BEGINSWITH[c] '包含的字符串'"  // 以某個字符串開頭

 

    @"屬性名 ENDSWITH[d] '包含的字符串'"   // 以某個字符串結束

 

【注意】:包含的字符串要用單引號括上

 

    :[c]不區分大小寫

 

         [d]不區分發音符號即沒有重音符號

 

[cd]既不區分大小寫,也不區分發音符號。

 

    */

 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username ENDSWITH 'wu '"];

 

 

 

(6).通配符查找

 

/*   

 

通配符:LIKE

 

     例:

 

     @"屬性名 LIKE[cd] '*er*'"    //      *表示多個字符

 

     @"屬性名 LIKE[cd] '???er*'"  //      ?表示一個字符

 

     */

 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username LIKE '*san*'"];

 

 

 

…………..還有其餘條件設置,我會上傳一份比較綜合的文檔給你們

 

3. 設置查詢條件

 

fetchRequest.predicate = predicate;

 

 

 

4. 執行請求,請求的結果被放在數組中,數組中存放的就是模型

 

NSArray *result = [NSManagedObjectContext executeFetchRequest:fetchRequest error:&error];

 

 

4、刪除數據

//刪除某一個實體(即模型)

[NSManagedObjectContext deleteObject:實體];

只要對模型作了修改,調用save方法就能夠自動修改數據庫中的值

[NSManagedObjectContext save:nil];

 

5、修改

直接修改模型屬性的值

save模型

相關文章
相關標籤/搜索