iOS CoreData的簡單操作以及版本遷移

zhf_Zachariah發表於2017-12-13

瞭解CoreData的使用之前先看看CoreData中三個主要類

CoreData三個類的關係.jpg

  • CoreData 進行增刪改查的時候常用的類: NSEntityDescription: 獲取實體物件 NSFetchRequest: 請求體 NSPredicate: 請求條件 NSSortDescriptor: 排序

    CoreData的常用類.jpg

  • CoreData 進行增刪改查的簡單操作

先引入標頭檔案#import "AppDelegate.h"
底下用到的方法是建立CoreData時系統自動載入到AppDelegate.m中的,所以要先獲取到UIApplication的代理物件;
self.myApp = [UIApplication sharedApplication].delegate;
複製程式碼

####- CoreData增:

1.獲取實體物件(下面用到)
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Teacher" inManagedObjectContext:self.myApp.managedObjectContext];
2.初始化的時候使用CoreData的initWithEntity進行初始化
Teacher *teacher = [[Teacher alloc] initWithEntity:entity insertIntoManagedObjectContext:self.myApp.managedObjectContext]; 
3.給teacher進行賦值 
teacher.name = @"呵呵";
teacher.age = 18; 
4.儲存資料庫
[self.myApp.managedObjectContext save:nil];
複製程式碼

- CoreData刪:

1.獲取實體物件(下面用到)
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Teacher" inManagedObjectContext:self.myApp.managedObjectContext]; 
2.建立請求體 
NSFetchRequest *requset = [[NSFetchRequest alloc] init];
3.建立請求條件
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = 18"];
4.給請求體設定entity屬性,還有predicate屬性 
requset.entity = entity; 
requset.predicate = predicate; 
5.獲取要刪除的資料 
NSArray *array1 = [self.managedObjectContext executeFetchRequest:requset error:nil]; 
6.遍歷之後,使用deleteObject:刪除物件 
for (Student *stu2 in array1) {
[self.managedObjectContext deleteObject:stu2]; 
} 
7.儲存資料 
[self.myApp.managedObjectContext save:nil];
複製程式碼

- CoreData:改

1.獲取實體物件(下面用到) 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Teacher" inManagedObjectContext:self.myApp.managedObjectContext]; 
2.建立請求體 
NSFetchRequest *requset = [[NSFetchRequest alloc] init]; 
3.建立請求條件 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = 18"]; 
4.給請求體設定entity屬性,還有predicate屬性 
requset.entity = entity; requset.predicate = predicate; 
5.獲取要修改的資料 
NSArray *array1 = [self.managedObjectContext executeFetchRequest:requset error:nil]; 
6.遍歷之後,修改要修改的屬性 
for (Student *stu2 in array1) { 
stu2.name = @"需要修改的內容"; 
} 
7.儲存資料 
[self.myApp.managedObjectContext save:nil];
複製程式碼

- CoreData:查

1.獲取實體物件(下面用到) 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Teacher" inManagedObjectContext:self.myApp.managedObjectContext]; 
2.建立請求體 
NSFetchRequest *requset = [[NSFetchRequest alloc] init]; 
3.建立請求條件 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = 18"]; 
4.給請求體設定entity屬性,還有predicate屬性 
requset.entity = entity; 
requset.predicate = predicate; 
5.獲取所查詢的內容 
NSArray *array1 = [self.managedObjectContext executeFetchRequest:requset error:nil]; 
6.儲存資料
[self.myApp.managedObjectContext save:nil];
複製程式碼
  • CoreData的版本遷移
    iOS CoreData的簡單操作以及版本遷移
    iOS CoreData的簡單操作以及版本遷移
    CoreData的版本遷移.png

總結:

從以上可以看到我們使用coreData對資料庫進行操作的增刪改查就使用了幾個類,步驟都差不多,除了增加資料的時候,其他的基本都是一樣的,只要理解以上常用的類,靈活使用就可以對資料進行想要的操作了。

相關文章