iOS coreData入門

eeec4 9年前發布 | 10K 次閱讀 IOS iOS開發 移動開發

1.創建程序時勾選coredata

2.在core.xcdatamodeld文件中建立表User

使用時,先為User表創建modal類,繼承自NSManagedObject


在AppDelegate中會有自動生成的幾個屬性用來數據庫訪問等


數據庫增刪改查過程:先將結果查詢出來,在查詢出來的結果上進行數據操作,最后再保存回去

1.增

User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext];   // 返回插入的數據項
    user.name = @"gaoxinchuan";    // 設置屬性內容
    user.age  = [NSNumber numberWithInt:6];
    
    NSError *error = nil;
    BOOL isSave =   [self.managedObjectContext save:&error]; // 保存即可
    if (!isSave) {
        NSLog(@"error:%@,%@",error,[error userInfo]);
    }
    else{
        NSLog(@"保存成功");
    }


2.刪

// 實現原理
    // 將結果查詢出來,在查詢出來的結果上操作,最后再保存回去
    NSEntityDescription *description = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];        // 設置查詢集合
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setIncludesPropertyValues:NO];
    [request setEntity:description];
    NSError *error = nil;
    NSArray *datas = [self.managedObjectContext executeFetchRequest:request error:&error]; // 進行查詢
    if (!error && datas && [datas count])
    {
        for (NSManagedObject *obj in datas)
        {
            [self.managedObjectContext deleteObject:obj];   // 刪除數據項
        }
        if (![self.managedObjectContext save:&error])       // 保存最后結果,同步到數據庫
        {
            NSLog(@"error:%@",error);
        }
    }


3.改

NSEntityDescription *description = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setIncludesPropertyValues:NO];
    [request setEntity:description];
    NSError *error = nil;
    NSArray *datas = [self.managedObjectContext executeFetchRequest:request error:&error];
    if (!error && datas && [datas count])
    {
        for (User *obj in datas)
        {
            obj.name = @"haizeiwang";     // 修改數據
        }
        if (![self.managedObjectContext save:&error])   // 同步到數據庫
        {
            NSLog(@"error:%@",error);
        }
    }


4.查

//創建取回數據請求
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    request.predicate = [NSPredicate predicateWithFormat:@"name == @'gaoxinchuan'"];
    //設置要檢索哪種類型的實體對象
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"inManagedObjectContext:self.managedObjectContext];
    //設置請求實體
    [request setEntity:entity];
    //指定對結果的排序方式
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name"ascending:NO];
    NSArray *sortDescriptions = [[NSArray alloc]initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptions];
    NSError *error = nil;
    //執行獲取數據請求,返回數組
    NSMutableArray *mutableFetchResult = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
    if (mutableFetchResult == nil) {
        NSLog(@"Error: %@,%@",error,[error userInfo]);
    }
    self.dataArray = mutableFetchResult;
    for (User *dog in self.dataArray) {
        NSLog(@"age:%@--name:%@",dog.age,dog.name);
    }


5.可以設置查詢條件:NSPredicate

 本文由用戶 eeec4 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!