IOS-Core Data

1.CoreData的概述

Core Data不是數據庫, 是使 數據庫、XML、二進制文件等方式來存儲數據的一個框架。數據庫

Core Data是iOS3以後纔出現的一個框架,容許咱們以面向對象的方式儲存和管理數據。使用Core Data框架,咱們能夠很輕鬆有效地經過面向對象的接口管理數據。框架

Core Data框架提供了對象-關係映射(ORM)的功能,即可以將OC對象轉化成數據,保存在SQLite3數據庫文件中,也可以將保存在數據庫中的數據還原成OC對象。fetch

在數據操做過程當中, 需編寫任何SQL語句。code

2.CoreData核心對象的介紹

1.NSManagedObject:模型對象,或者叫實體,可理解爲OC 的對象。orm

2.NSManagedObjectModel:模型文件,記錄全部的模型對象及對象 的屬性對象

3.NSPersistentStoreCoordinator:持久化存儲協調者,是數據庫和程序之間的橋樑, 用來設置數據存儲的名字,位置,存儲方式,和存儲時機。 來執行具體的CRUD操做。接口

4.NSManagedObjectContext:對象管理上下文,用戶全部的持久化操做都是經過此對象。再由此對象去調用NSPersistentStoreCoordinator對象執行具體的操做。圖片

3.CoreData建立模型文件

1.在建立新的項目的時候,記得勾選Use Core Dataip

輸入圖片說明

2.添加Entityit

輸入圖片說明

3.在Entity中添加Attributes

輸入圖片說明

4.新建立類的時候選擇NSManagedObject subclass添加你所建立的庫的類

輸入圖片說明

4.添加實體

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];
    }];
相關文章
相關標籤/搜索