Cocoa2010.03.16 23:05
Cocoa의 CoreData에서 사용하는 데이터모델링 NSObjectModel은 GUI툴로 데이터베이스 모델링이 가능하다.
처음 프로젝트생성시에 데이터베이스모델링을 완전히 끝내놓고 개발하면 별 문제없이 개발이 가능할수 있는데, 개발하다 보면 데이터베이스 모델링이 바뀌는 경우도 있다.
개발도중 데이터베이스모델을 바꾸고 프로그램을 실행시키면 아래와 같은 에러를 내뱉으며 프로그램이 죽는 경우가 있다.

2010-03-16 22:45:03.260 TimeTable[23825:207] Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 UserInfo=0x3c1c470 "Operation could not be completed. (Cocoa error 134100.)", {

    metadata =     {

        NSPersistenceFrameworkVersion = 248;

        NSStoreModelVersionHashes =         {

            Timetable = <efb55f31 22fd534b 5e05d023 739a5e25 1194b93d f88d2028 65179b12 0e5d4b4a>;

        };

        NSStoreModelVersionHashesVersion = 3;

        NSStoreModelVersionIdentifiers =         (

        );

        NSStoreType = SQLite;

        NSStoreUUID = "654E9FC4-1F5F-4478-891C-0B372C300886";

        "_NSAutoVacuumLevel" = 2;

    };

    reason = "The model used to open the store is incompatible with the one used to create the store";

}



이것은 기존에 저장되어 있는 테이블정보와 일치하지 않는다는 이유로 프로그램이 죽는것이기 떄문에 아래 위치에 있는 데이터베이스파일을 삭제해주면 된다.

/Users/유저명/Library/Application Support/iPhone Simulator/User/Applications/00F6XXXXXX(자신이 만든 프로젝트가 어떤것이니 하나하나 열어서 찾는다)/Documents/프로젝트명.sqlite

테이블정보가 바뀌었기 때문에 위 sqlite파일을 삭제해주면 빌드시에 바뀐 테이블정보로 sqlite파일을 생성해주는 것이다.
신고
Posted by 신라
Cocoa2010.03.08 19:47

CoreData를 처음 접했을때 가장 먼저 부딪히는 벽이 각종 클래스들의 정확한 용도와 어떻게 맞물려 움직이는지 샘플코드만 봐서는 잘 이해가 안간다는 것이다.

아래 링크(일본어)에 CoreData의 이해에 첫걸음을 내딪을수 있게 클래스의 용도가 적절히 잘 설명 되어있다.


http://konton.ninpou.jp/program/cocoa/coredata/entry.html


용도만 번역해서 남겨둔다. 참고로 테이블뷰를 이용한 CoreData샘플예에서의 이야기이다.


NSManagedObjectModel ; 데이터베이스의 구조

NSManagedObjectContext ; 데이터베이스 파일내의 데이터 전체의 집합체

NSPersistentStoreCoordinator ; 데이터베이스 파일에의 입출력관계를 처리

NSFetchedResultsController ; NSManagedObjectContext로부터 테이블뷰에 데이터를 표시하기 좋게 데이터를 가공해주는, CoreData형식의 데이터와 테이블뷰와의 다리역활을 해주는것



- Fetch란 SQL스테이트문의 실행을 의미


NSFetchRequest ; SQL스테이트문

NSEntityDescription ; 검색을 실행하는 테이블을 가르키는 SQL스테이트문에서의 'FROM~'부분에 해당

NSSortDescription ; 'SELECT~'나 'order~'에 해당



신고
Posted by 신라

티스토리 툴바