realm-cocoa 마이그레이션 - RLMException이 나오고 앱이 중지되면 파일을 지우고 해결합니다.
3953 단어 SwiftObjective-CRealm
웹 사이트: 희귀 lm. 이오 , Facebook 그룹: Realm Japan User Group , 질문: 슬랙 채널
-
다음과 같이 Xcode의 콘솔 화면에
'RLMException', reason: 'Migation' is required
가 나오고, 앱이 중지되었을 때는 이전 실행했을 때와 Realm 모델 클래스의 스키마가 바뀌어 마이그레이션이 필요합니다. 스키마가 변경되었다는 것은, RLMObject
를 상속해 정의한 클래스의 프로퍼티에 어떠한 변경이 있었다고 하는 것을 가리킵니다. (이름 변경 포함)스키마의 컬럼이 증가할 때
2015-07-11 13:04:32.142 ASNFindMovie[10892:356134] *** Terminating app due to uncaught exception 'RLMException', reason: 'Migration is required for object type 'ASNProduct' due to the following errors:
- Property 'hoge' has been added to latest object model.'
위와 같은 오류 메시지는 "
ASNProduct
클래스에 hoge
속성이 추가되었으므로 마이그레이션이 필요합니다"라는 의미입니다.스키마의 열이 줄어들 때
2015-07-11 13:01:41.641 ASNFindMovie[10724:352635] *** Terminating app due to uncaught exception 'RLMException', reason: 'Migration is required for object type 'ASNProduct' due to the following errors:
- Property 'hoge' is missing from latest object model.'
위와 같은 오류 메시지는 "
ASNProduct
클래스가 hoge
속성을 찾을 수 없기 때문에 마이그레이션이 필요합니다"라는 의미입니다.왜 마이그레이션이 필요합니까?
Realm은 데이터베이스이며 이전에 사용했던 스키마의 데이터가 Realm 파일에 저장됩니다. 스키마를 변경하면 이전에 저장된 데이터가 새 변경 후 스키마를 지원할 수 없으며 새 스키마를 처리하려면 마이그레이션이 필요합니다.
데이터가 저장되지 않은 경우에도 Realm 파일이 있으면 스키마를 쓰고 Realm을 호출 할 때 이전에 정의 된 스키마와 이전에 사용한 스키마가 일관성이 있습니다. 확인되므로 마이그레이션이 필요합니다.
공식 문서 마이그레이션 섹션에도 설명이 설명되어 있습니다.
공식 문서(한국어) - realm-cocoa 마이그레이션(Objective-C)
공식 문서(한국어) - realm-cocoa 마이그레이션(Swift)
대처법
하나는 마이그레이션을 수행하는 방법입니다.
자세한 내용은 공식 문서의 마이그레이션 섹션을 참조하십시오.
개발 초반이라면 스키마가 변경되는 빈도가 높기 때문에 변경이 있을 때마다 Realm 파일을 한 번 지우는 것도 한 가지 방법입니다.
Realm 파일을 지우는 방법 (수동으로 지우는 방법)
po RLMRealm.defaultRealmPath
를 입력합니다. 그러면 defaultRealm까지의 경로가 표시됩니다.default.realm
를 지우고 spotlight 등으로 입력하여 Finder에서 Documents 디렉토리를 표시합니다.Reference
이 문제에 관하여(realm-cocoa 마이그레이션 - RLMException이 나오고 앱이 중지되면 파일을 지우고 해결합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/YukiAsano/items/baa33c9359a6e17d4b5b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)