- 以前簡(jiǎn)單學(xué)習(xí)過(guò)coredata,但是在公司這么時(shí)間不用了,又感覺(jué)快忘記了,今天就拿點(diǎn)時(shí)間出來(lái)復(fù)習(xí)下coredata
- 本文只是簡(jiǎn)單的復(fù)習(xí)下coredata苫费,涉及到的內(nèi)容也只是數(shù)據(jù)庫(kù)的增刪改查這些基本操作
用coredata必須知道的幾個(gè)概念
/*
1 、NSManagedObjectContext 管理對(duì)象双抽,上下文百框,持久性存儲(chǔ)模型對(duì)象
2、NSManagedObjectModel 被管理的數(shù)據(jù)模型牍汹,數(shù)據(jù)結(jié)構(gòu)
3铐维、NSPersistentStoreCoordinator 連接數(shù)據(jù)庫(kù)的
4柬泽、NSManagedObject 被管理的數(shù)據(jù)記錄
5、NSFetchRequest 數(shù)據(jù)請(qǐng)求
6嫁蛇、NSEntityDescription 表格實(shí)體結(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)建一個(gè)上下文的管理對(duì)象 */
@property (nonatomic, strong) NSManagedObjectContext *myContext;
/** 數(shù)據(jù)源數(shù)組 */
@property (nonatomic, strong) NSMutableArray *allDataArray;
@end
@implementation ViewController
/*
1 锨并、NSManagedObjectContext 管理對(duì)象,上下文睬棚,持久性存儲(chǔ)模型對(duì)象
2琳疏、NSManagedObjectModel 被管理的數(shù)據(jù)模型,數(shù)據(jù)結(jié)構(gòu)
3闸拿、NSPersistentStoreCoordinator 連接數(shù)據(jù)庫(kù)的
4、NSManagedObject 被管理的數(shù)據(jù)記錄
5书幕、NSFetchRequest 數(shù)據(jù)請(qǐng)求
6新荤、NSEntityDescription 表格實(shí)體結(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)建一個(gè)實(shí)體描述對(duì)象
NSEntityDescription *personDes = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.myContext];
// 創(chuàng)建多個(gè)數(shù)據(jù)
for (int i = 0; i < 10; i++) {
// 創(chuàng)建一個(gè)Person對(duì)象
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 {
// 查詢(xún)表中數(shù)據(jù)
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
// 排序
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
[request setSortDescriptors:@[sort]];
// 按條件查詢(xún)
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = %@", @23];
// [request setPredicate:predicate];
NSError *error;
// 查詢(xún),注意返回的結(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)建工程的時(shí)候記得勾選coredata台汇,不然自己從新建還是挺麻煩的
-
經(jīng)常忘記在表中建的實(shí)體怎么導(dǎo)出苛骨,這其實(shí)就是
com+N
,選擇coredata,建個(gè)子類(lèi)苟呐,然后全部勾選痒芝,下一步,全部勾選牵素,下一步的事情
如上圖