Core Data不是數據庫, 是使 數據庫、XML、二進制文件等方式來存儲數據的一個框架。數據庫
Core Data是iOS3以後纔出現的一個框架,容許咱們以面向對象的方式儲存和管理數據。使用Core Data框架,咱們能夠很輕鬆有效地經過面向對象的接口管理數據。框架
Core Data框架提供了對象-關係映射(ORM)的功能,即可以將OC對象轉化成數據,保存在SQLite3數據庫文件中,也可以將保存在數據庫中的數據還原成OC對象。fetch
在數據操做過程當中, 需編寫任何SQL語句。code
1.NSManagedObject:模型對象,或者叫實體,可理解爲OC 的對象。orm
2.NSManagedObjectModel:模型文件,記錄全部的模型對象及對象 的屬性對象
3.NSPersistentStoreCoordinator:持久化存儲協調者,是數據庫和程序之間的橋樑, 用來設置數據存儲的名字,位置,存儲方式,和存儲時機。 來執行具體的CRUD操做。接口
4.NSManagedObjectContext:對象管理上下文,用戶全部的持久化操做都是經過此對象。再由此對象去調用NSPersistentStoreCoordinator對象執行具體的操做。圖片
1.在建立新的項目的時候,記得勾選Use Core Dataip
2.添加Entityit
3.在Entity中添加Attributes
4.新建立類的時候選擇NSManagedObject subclass添加你所建立的庫的類
1.建立實體對象
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:delegate.managedObjectContext];
2.添加一個實體對象到 managedObjectContext 中
User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:delegate.managedObjectContext]; user.userID = @"10002"; user.userName = @"懷化"; user.userAge = @30; user.userSex = @"男"; user.saveDate = [NSDate date]; 保存上下文 [delegate saveContext];
##5.Core Data的數據查詢、更新與刪除
1.建立取值條件與查詢條件
// 建立一個取值請求 NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"]; // 使用謂詞設置查詢條件 // request.predicate = [NSPredicate predicateWithFormat:@"userAge < 35"]; // request.predicate = [NSPredicate predicateWithFormat:@"userName LIKE '*楊*'"]; // 設置查詢的條數 request.fetchLimit = 2; // 指定到某個位置開始查詢(分頁效果) request.fetchOffset = 2; // 按某個字段升序、降序排列 NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"userAge" ascending:YES]; request.sortDescriptors = @[sort]; NSError *error = nil;
2.在上下文中執行取值請求
NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:&error]; [objects enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { User *user = (User *)obj; NSLog(@"%@ %@ %@ %@ %@",user.userID, user.userName, user.userAge, user.userSex, user.saveDate); }];
3.更新數據
// 一、查詢 NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"]; request.predicate = [NSPredicate predicateWithFormat:@"userID == '10005'"]; NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:nil]; [objects enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { // 二、修改 User *user = (User *)obj; user.saveDate = [NSDate date]; // 三、保存 [delegate saveContext]; }];
4.刪除數據
// 一、查詢 NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"]; request.predicate = [NSPredicate predicateWithFormat:@"userID == '10005'"]; NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:nil]; [objects enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { // 二、刪除 [delegate.managedObjectContext deleteObject:obj]; // 三、保存 [delegate saveContext]; }];