2012-07-16 4 views
0

코어 데이터로 응용 프로그램을 빌드했습니다. 두 가지 속성을 가진 엔티티에서 잘 작동합니다. 하나의 속성으로 새 엔티티를 추가하려는 경우 시작시 응용 프로그램이 충돌합니다.코어 데이터 내 응용 프로그램이 다운 됨

2012-07-16 23:11:13.579 myApp[6773:fb03] Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn’t be completed. (Cocoa error 134100.)" UserInfo=0x6bb36e0 {metadata=<CFBasicHash 0x6bbae90 [0x1748b48]>{type = immutable dict, count = 7, 
entries => 
    2 : <CFString 0x6bbab30 [0x1748b48]>{contents = "NSStoreModelVersionIdentifiers"} = <CFArray 0x6bbaf20 [0x1748b48]>{type = immutable, count = 1, values = (
    0 : <CFString 0x1743cd8 [0x1748b48]>{contents = ""} 
)} 
    4 : <CFString 0x6bbab60 [0x1748b48]>{contents = "NSPersistenceFrameworkVersion"} = <CFNumber 0x6bbaa30 [0x1748b48]>{value = +386, type = kCFNumberSInt64Type} 
    6 : <CFString 0x6bbaec0 [0x1748b48]>{contents = "NSStoreModelVersionHashes"} = <CFBasicHash 0x6bbafb0 [0x1748b48]>{type = immutable dict, count = 1, 
entries => 
    2 : <CFString 0x6bbaf40 [0x1748b48]>{contents = "AllFamille"} = <CFData 0x6bbaf60 [0x1748b48]>{length = 32, capacity = 32, bytes = 0x5a5b78eb9edf4005bbe8a8d5e85fd102 ... 208bdf48b8b44695} 
} 

    7 : <CFString 0x1101ad8 [0x1748b48]>{contents = "NSStoreUUID"} = <CFString 0x6bbad30 [0x1748b48]>{contents = "45640157-116E-4616-93C5-2DA6027F4E9C"} 
    8 : <CFString 0x1101978 [0x1748b48]>{contents = "NSStoreType"} = <CFString 0x1101988 [0x1748b48]>{contents = "SQLite"} 
    9 : <CFString 0x6bba9e0 [0x1748b48]>{contents = "_NSAutoVacuumLevel"} = <CFString 0x6bbb000 [0x1748b48]>{contents = "2"} 
    10 : <CFString 0x6bbaef0 [0x1748b48]>{contents = "NSStoreModelVersionHashesVersion"} = <CFNumber 0x6d84b60 [0x1748b48]>{value = +3, type = kCFNumberSInt32Type} 
} 
, reason=The model used to open the store is incompatible with the one used to create the store}, { 
    metadata =  { 
     NSPersistenceFrameworkVersion = 386; 
     NSStoreModelVersionHashes =   { 
      AllFamille = <5a5b78eb 9edf4005 bbe8a8d5 e85fd102 3c6d4040 f1b7fc6c 208bdf48 b8b44695>; 
     }; 
     NSStoreModelVersionHashesVersion = 3; 
     NSStoreModelVersionIdentifiers =   (
      "" 
     ); 
     NSStoreType = SQLite; 
     NSStoreUUID = "45640157-116E-4616-93C5-2DA6027F4E9C"; 
     "_NSAutoVacuumLevel" = 2; 
    }; 
    reason = "The model used to open the store is incompatible with the one used to create the store"; 
} 
+0

모델을 변경할 때마다 시뮬레이터에서 앱을 삭제해야합니다. –

답변

5

아마도 그 속성을 추가했기 때문일 수 있습니다. 따라서 새 데이터베이스가 이전 데이터베이스와 일치하지 않습니다. 시뮬레이터 폴더에서 데이터베이스를 삭제하고 다시 실행 해보십시오.

+0

그 밖의 작업은 없습니까? 지금 충돌은 없습니다. th – XcodeMania

2

새 엔티티를 새로 추가 했으므로 데이터베이스를 저장하는 데 사용 된 관리 객체 모델이 다르기 때문에이 문제가 발생합니다. 수정 된 관리 객체 모델을 사용하여 이전 모델로 저장된 데이터를로드 할 수 없습니다.

첫 번째 버전의 데이터베이스에서 작업하는 경우 시뮬레이터/장치에서 앱을 삭제할 수 있습니다. 그러나 이미 게시 된 앱을 변경하는 경우 새 버전을 설치하기 전에 사용자에게 앱을 제거하도록 요청할 수 없기 때문에 큰 문제가 될 수 있습니다.

이 경우 관리 대상 개체 모델의 새 버전을 만든 다음 이전 모델 버전에서 최신 버전으로 데이터베이스의 경량 마이그레이션을 수행하도록 코어 데이터를 구성해야합니다.

the steps detailed in the documentation을 따르십시오.

관련 문제