iOS-CoreData 데이터 영구화
1. NSManagedObjectContext 생성
- (NSManagedObjectContext *)creatManagedObjectContext
{
//1、
//
//modelName ( xcdatamodeld )
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"modelName" withExtension:@"momd"];
//
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
//2、 //
NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
//
NSString *docStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *sqlPath = [docStr stringByAppendingPathComponent:@"mySqlite.sqlite"]; NSLog(@"path = %@", sqlPath);
NSURL *sqlUrl = [NSURL fileURLWithPath:sqlPath];
//
[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:sqlUrl options:nil error:nil];
//3、
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
//
context.persistentStoreCoordinator = store;
return context;
}
2. Entity(솔리드)에 대한 작업
조회
#pragma mark -
- (void)queryData:(id)data
{
NSError *error = nil;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Book"];
NSMutableArray *resultArray = [[_myAppdelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (resultArray == nil) {
NSLog(@"error = %@",error);
}else{
NSLog(@"query successful!");
}
for (Book *book in resultArray) {
NSLog(@"name==%@------price==%@
",book.name,book.price);
}
}
삽입
#pragma mark -
- (void)insertData:(id)data
{
Book *book = [NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:_myAppdelegate.managedObjectContext];
book.name = @" ";
book.price = [NSNumber numberWithFloat:10.5];
NSError *error = nil;
BOOL isSaveSuccess = [_myAppdelegate.managedObjectContext save:&error];
if (!isSaveSuccess) {
NSLog(@"Error:%@",error);
}else{
NSLog(@"Save successful!");
}
}
삭제
#pragma mark -
- (void)deleteData:(id)date
{
NSFetchRequest *request = [[NSFetchRequest alloc]init];
NSEntityDescription *book = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:_myAppdelegate.managedObjectContext];
request.entity = book;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@",@" "];
request.predicate = predicate;
NSError *error = nil;
NSMutableArray *fetchResult = [[_myAppdelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (fetchResult == nil) {
NSLog(@"delete error = %@",error);
}else{
NSLog(@"delete successful!");
}
for (Book *book in fetchResult) {
[_myAppdelegate.managedObjectContext deleteObject:book];
}
if (![_myAppdelegate.managedObjectContext save:&error]) {
NSLog(@"Error == %@,%@",error,error.userInfo);
}else{
NSLog(@"delete save successful !");
}
}
업데이트
#pragma mark -
- (void)updateData:(id)data
{
NSFetchRequest *request = [[NSFetchRequest alloc]init];
NSEntityDescription *book = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:_myAppdelegate.managedObjectContext];
request.entity = book;
//
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@",@" "];
request.predicate = predicate;
NSError *error = nil;
NSMutableArray *fetchResult = [[_myAppdelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (fetchResult == nil) {
NSLog(@"Error= %@",error);
}else{
NSLog(@"update successful!");
}
for (Book *book in fetchResult) {
book.name = @" ";
}
[_myAppdelegate.managedObjectContext save:&error];
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.