iCloud Design Guide 네 번째 챕터 번역입니다.
공식문서 원문: Designing for Core Data in iCloud
참고: iCloud Core Data 는 Deprecated 되어 다른 관련 문서 및 API를 찾을 수 없습니다..
iCloud Core Data 스토리지를 사용하면 모든 사용자의 기기에서 슈박스 스타일 앱 (iPhoto같은앱) 또는 데이터베이스 스타일 앱 (Bento같은앱)의 콘텐츠를 사용할 수 있다. 전체 구현 전략은 iCloud Programming Guide for Core Data(링크 없음)를 참조할것.
참고:코어데이터 앱을 만들려면 managed object model을 디자인하고 managed objects로 작업한다. Core Data에 익숙하지 않다면 Core Data Programming Guide를 읽어 볼 것.
코어데이터는 iCloud에 점증적으로 변경사항을 전송한다.
iCloud 계정에 연결된 기기에 설치된 당신앱의 각각의 인스턴스는 각각의 로컬 코어데이터 저장 파일을 유지 관리한다. 로컬에서 데이터가 변경되면 코어데이터는 당신앱의 디폴트 유비쿼터스 컨테이너에 로그파일을 변경사항을 기록한다.
저장파일이 아닌, 변경사항 로그파일은 아이클라우드에 업로드되고 사용자의 다른 기기에 다운로드된다. 같은 iCloud계정에 연결된 다른 기기에서 변경 로그가 도착하면 코어데이터는 SQLite 데이터베이스의 로컬 복사본을 업데이트한다.
iCloud와 함께 SQLite persistent store를 사용하는 방법에 대해 더 알고 싶다면 iCloud Programming Guide for Core Data의 Using the SQLite Store with iCloud를 볼것(링크없음).
Managed Documents 는 iCloud를 지원한다
UIManagedDocument 클래스는 iOS에서 코어데이터가 managed documents를 iCloud에 저장하는 기본 메커니즘이다. UIManagedDocument 클래스는 문서기반 앱에서의 각 문서에 대한 전체 코어데이터 스택을 관리한다. iCloud Programming Guide for Core Data의 Using Document Storage with iCloud(링크없음)를 읽어보고 당신앱에서 managed documents를 사용하는 방법을 찾아볼 것.
OS X에서 코어데이터는 NSPersistentDocument 클래스를 통해서 문서 아키텍처와 통합된다. 하지만 OS X v10.8에서 이 클래스의 인스턴스는 iCloud에 대한 특정 지원을 제공하지 않는다.
iCloud 코어데이터의 Launch Sequence 설계
당신이 iCloud를 채택하면 launch sequence(시작 순서)를 설계할 땐 특히나 주의해야한다. 다음 아래요소들이 작용하며 당신은 반드시 이를 고려해야한다:
- 사용자가 이전에 앱에서 iCloud 사용환경 설정을 지정했을 수도 하지 않았을 수도 있다; 당신앱의 로컬 인스턴스가 유비쿼터스 컨테이너에 초기 저장을 이미 설정했거나 하지 않았을 수 도 있다. launch sequence의 첫 단계로서 NSUserDefaults를 사용해서 로컬 user defaults 데이터를 읽어 볼 것. 당신앱이 작동하는 동안 해당 객체를 사용해서 다음 실행때 필요로 하게될 사용자 선택사항을 저장하라.
- 사용자는 iCloud에서 로그아웃하거나 다른 계정으로 전환할 수 있다. 사용자가 iCloud에서 로그아웃하거나 다른 계정으로 변경하면 이전에 사용한 계정에대한 유비쿼터스 컨테이너는 더이상 당신앱에서 사용할 수 없다.
- 로컬 코어데이터 저장소는 같은 사용자가 가진 다른 기기의 저장소보다 새로운 것일 수도 오래된 것일 수도 있다. 앱 시작시 코어데이터가 로컬저장소와 iCloud에서 온 변경사항 로그를 조정해야할 수도 있다. 이 때 중복 레코드 및 충돌 탐지와 해결이 포함 될 수 있다. 테스트는 매우 중요하다. 몇가지 팁을 보고 시작하려면 iCloud Programming Guide for Core Data(링크없음)의 Best Practices와 Troubleshooting 뿐만 아니라 ‘iCloud 테스팅과 디버깅(Key-Value 스토리지와 Document 스토리지)‘를 참고 할 것.
다음 챕터 시리즈 연재작 CloudKit에서 계속됩니다.