CoreData復(fù)習(xí)

  • 以前簡單學(xué)習(xí)過coredata,但是在公司這么時間不用了,又感覺快忘記了,今天就拿點(diǎn)時間出來復(fù)習(xí)下coredata
  • 本文只是簡單的復(fù)習(xí)下coredata,涉及到的內(nèi)容也只是數(shù)據(jù)庫的增刪改查這些基本操作
用coredata必須知道的幾個概念
/*
 1 、NSManagedObjectContext 管理對象,上下文,持久性存儲模型對象
 2、NSManagedObjectModel 被管理的數(shù)據(jù)模型,數(shù)據(jù)結(jié)構(gòu)
 3、NSPersistentStoreCoordinator 連接數(shù)據(jù)庫的
 4、NSManagedObject 被管理的數(shù)據(jù)記錄
 5、NSFetchRequest 數(shù)據(jù)請求
 6、NSEntityDescription 表格實體結(jié)構(gòu)
 */
//
//  ViewController.m
//  CoreData1
//
//  Created by liyang on 16/5/18.
//  Copyright ? 2016年 liyang. All rights reserved.
//

#import "ViewController.h"
#import "AppDelegate.h"
#import <CoreData/CoreData.h>
#import "Person.h"

@interface ViewController ()

/** appdelegate */
@property (nonatomic, strong) AppDelegate *myAppDelegate;
/** 創(chuàng)建一個上下文的管理對象 */
@property (nonatomic, strong) NSManagedObjectContext *myContext;
/** 數(shù)據(jù)源數(shù)組 */
@property (nonatomic, strong) NSMutableArray *allDataArray;

@end

@implementation ViewController

/*
 1 、NSManagedObjectContext 管理對象,上下文,持久性存儲模型對象
 2、NSManagedObjectModel 被管理的數(shù)據(jù)模型,數(shù)據(jù)結(jié)構(gòu)
 3、NSPersistentStoreCoordinator 連接數(shù)據(jù)庫的
 4、NSManagedObject 被管理的數(shù)據(jù)記錄
 5、NSFetchRequest 數(shù)據(jù)請求
 6、NSEntityDescription 表格實體結(jié)構(gòu)
 */

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 初始化
    self.myAppDelegate = [UIApplication sharedApplication].delegate;
    self.myContext = self.myAppDelegate.managedObjectContext;
    self.allDataArray = [NSMutableArray array];
    
    // 刪除所有的數(shù)據(jù)
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
    NSArray *arr = [self.myContext executeFetchRequest:request error:nil];
    for (Person *per in arr) {
        [self.myContext deleteObject:per];
    }
    [self.myAppDelegate saveContext];
}

#pragma mark - 增
- (IBAction)btn1:(id)sender {
    
    // 創(chuàng)建一個實體描述對象
    NSEntityDescription *personDes = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.myContext];
    
    // 創(chuàng)建多個數(shù)據(jù)
    for (int i = 0; i < 10; i++) {
        // 創(chuàng)建一個Person對象
        Person *person = [[Person alloc] initWithEntity:personDes insertIntoManagedObjectContext:self.myContext];
        person.name = [NSString stringWithFormat:@"liyang--%d", i];
        person.age = [NSNumber numberWithInt:i];
        [self.myContext insertObject:person];
        
        // 加到數(shù)組中
        [self.allDataArray addObject:person];
    }
    
    [self.myAppDelegate saveContext];
}
#pragma mark - 查
- (IBAction)btn2:(id)sender {
    
    // 查詢表中數(shù)據(jù)
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
    // 排序
    NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
    [request setSortDescriptors:@[sort]];
    
    // 按條件查詢
//    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = %@", @23];
//    [request setPredicate:predicate];
    
    NSError *error;
    // 查詢,注意返回的結(jié)果是數(shù)組
    NSArray *arr = [self.myContext executeFetchRequest:request error:&error];
    if (!error) {
        for (Person *per in arr) {
            NSLog(@" %@, %@", per.age, per.name);
        }
    }
}
#pragma mark - 改
- (IBAction)btn3:(id)sender {
    Person *per = [self.allDataArray objectAtIndex:0];
    if (per) {
        per.name = @"superMan";
        per.age = @1;
        [self.myAppDelegate saveContext];
    }
}

#pragma mark - 刪
- (IBAction)btn4:(id)sender {
    Person *per = [self.allDataArray lastObject];
    if (per) {
        [self.myContext deleteObject:per];
        [self.allDataArray removeObject:per];
        [self.myAppDelegate saveContext];
    }
}

@end
  • 在創(chuàng)建工程的時候記得勾選coredata,不然自己從新建還是挺麻煩的

  • 經(jīng)常忘記在表中建的實體怎么導(dǎo)出,這其實就是com+N,選擇coredata,建個子類,然后全部勾選,下一步,全部勾選,下一步的事情

    創(chuàng)建子類.png

  • 如上圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.CoreData 是基于Sqlite的封裝,數(shù)據(jù)保存的一個數(shù)據(jù)文件中. 2.Xcode8 創(chuàng)建NSManage...
    司馬捷閱讀 194評論 0 2
  • CoreData 從入門到精通 (一) 數(shù)據(jù)模型 + CoreData 棧的創(chuàng)建 概述 CoreData 是 Co...
    chaoyang805閱讀 3,999評論 8 46
  • 其實人生本來就是沒有意義的,為了使自己活得感覺良好,才將“意義”拿出來,從這點(diǎn)來看,“意義”是人獲得幸福感覺的一個...
    草石閱讀 493評論 0 2
  • 一、dSYM是什么? 是一個16進(jìn)制的函數(shù)地址映射信息文件,這個文件中包含了項目中對應(yīng)的函數(shù)名和文件名,每次項目編...
    LeonR閱讀 860評論 2 0
  • 1.隔著氤氳的晨霧,斑駁的碎瓦之間染了新綠,那株夏瑾也在這霧靄間蒙上水汽,在驚蟄過后醒來,伴著細(xì)風(fēng)和黎明。煙雨蒙蒙...
    Absinthis閱讀 347評論 0 0

友情鏈接更多精彩內(nèi)容