본문 바로가기

프로그래밍/iOS

[iOS] XCode8에서 Coredata사용하기


1. CoreData

앱의 모델을 관리해주는 framework

sqlite3 기반


2. 새 프로젝트에 적용하기

새 프로젝트 만들기 할때 use Core Data에 체크표시를 해주자

그럼 AppDelegate.h를 보면 persistentContrainer를 자동으로 생성해준다.

AppDelegate.m에서도 필요한 코드들을 추가해준다.

이번엔 사용하지 않으므로 알아만 두자.

프로젝트이름.xcdatamodel 파일을 열어보면 위와 같이 뜬다.

왼쪽 하단의 +버튼을 누르면 사진과 같이 Entity가 생성된다.

이름도 바꿀수있는데 여기선 그냥 유지했다.

Attribute란에 항목을 추가하자.

간단히 string을 추가했다.

그 후 Editor 메뉴의 Create NSManagedObject Subclass를 선택하면 모델에 대한 소스코드를 생성해준다.

대충 체크체크 하고 넘어가서 빌드를 해보면

위와 같은 에러가 뜬다.

Entity가 중복 선언되었단 뜻인데, 자동생성인데 왜이러는진 아직 모르겠다.

여튼 추가한 name이 없는 CoreDataClass를 지워주고 다시 빌드하면 정상적으로 동작한다.

Entity와 coreData정보를 받아오기 위해 import추가를 하고

자주 사용하는 AppDelegate와 context를 변수로 지정하였다.

그리고 core데이터 저장 및 읽기

해당 row의 값 읽어오기 예제


아래는 코드로 작성

    _appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];

    _context = _appDelegate.persistentContainer.viewContext;

    

    // coreData 쓰기

    Entity* en = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:_context];

    en.name = @"merong";

    

    NSError* error;

    if ([_context save:&error] == NO)

    {

        NSLog(@"error = %@",[error description]);

    }

    // coreData에서 읽기

    NSFetchRequest* fetch = [[NSFetchRequest alloc] init];

    fetch.entity = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:_context];

    NSArray * array = [[_context executeFetchRequest:fetch error:&error] mutableCopy];

    if (error) {

        NSLog(@"error = %@",[error description]);

    }

    NSLog(@"array = %@",array);

    NSLog(@"name = %@",[array[0] valueForKey:@"name"]);




'프로그래밍 > iOS' 카테고리의 다른 글

[iOS] facebook 로그인버튼 만들어보자  (0) 2016.11.16
[iOS]UIController textField 사용하기  (0) 2016.11.15
[iOS] 이미지 black & white  (0) 2016.10.26
[iOS] 카메라해상도와 이미지와의 관계  (0) 2016.10.14
import  (0) 2016.10.05