####1.CoreData用於作數據持久化,適合大數據量的存儲和查詢;數據庫
####2.CoreData不是數據庫,CoreData能夠使用數據庫,XML等方式來存儲數據;框架
####3.SQLite經過SQL語句操做數據,CoreData使用面向對象的方式操做數據;fetch
####4.使用CoreData操做數據,不須要寫任何SQL語句;大數據
####5.使用CoreData,須要導入CoreData框架.net
(https://static.oschina.net/uploads/img/201609/03185446_dVwX.png "CoreData核心對象的關係")code
實體管理類:NSManagedObjectorm
實體描述類:NSEntityDescription對象
數據管理器類:NSManagedObjectContextip
數據鏈接器類:NSPersistentStoreCoordinatorget
數據模型器類:NSManagedObjectModel
1.如果新建的工程,選擇空白應用程序,next
2.勾選Use Core Data選項
此時生成的工程文件AppDelegate中,會自動生成被管理的數據上下文等相關代碼
// 一、添加一個實體對象到 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]; }
// 一、建立一個取值請求 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; // 二、在上下文中執行取值請求 NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:&error]; [objects enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { User *user = (User *)obj;
// 一、查詢 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];
// 一、查詢 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];