[ios] 동기화 및 백업을 위해 Core Data, iCloud 및 CloudKit 사용 및 함께 작동하는 방법

데이터를 저장, 동기화 및 백업하려는 앱을 만드는 초기 단계에 있습니다. 앱은 데이터베이스에 데이터 만 저장하지 않습니다. iOS 8 이상이 될 예정이므로 CloudKit을 사용할 수 있습니다. 몇 가지 조사를 수행했지만 Core Data, iCloud 및 CloudKit이 함께 작동하는 방식에 대해서는 아직 명확하지 않습니다.

이해하는 한 CloudKit은 클라우드로 /에서 데이터를 가져오고 검색하는 방법 일뿐입니다. CloudKit은 iCloud와 데이터를 동기화하는 다른 방법입니까?

내 질문은 다음과 같습니다.

  1. CloudKit을 사용하는 경우에도 로컬 코어 데이터 데이터베이스를 생성해야합니까?

    • 그렇다면 iCloud와 자동으로 동기화됩니까? 아니면 두 장소에 저장하기 위해 메서드를 호출해야합니까?
  2. 데이터가 클라우드에만 저장되는 경우 iOS 기기가 인터넷에 연결되어 있지 않을 때 사용자가 액세스 할 수 있습니다. CloudKit은 제한된 캐싱 만 가질 것이라고 읽었습니다.

  3. iCloud 계정이 활성화되지 않은 경우 어떻게 작동합니까?

누군가가 핵심 데이터 데이터베이스를 오프라인 및 온라인으로 저장하고 동기화하는 과정에서 각 기술이 수행하는 작업을 분류 할 수 있다면.

내 현재 이해는 다음과 같습니다.

  • Core Data는 데이터를 로컬에 저장하는 데 사용됩니다.

  • iCloud는 데이터를 동기화하고 클라우드에 저장합니다.

  • CloudKit은 클라우드에서 데이터를 저장하고 관리하는 기능을 제공합니까 ??

이 질문이 종료되지 않도록 충분한 정보를 제공했으면합니다.



답변

다음과 같습니다.

  • Core Data는 그 자체로 완전히 로컬이며 Apple의 클라우드 서비스와 자동으로 작동하지 않습니다.
  • iCloud가 활성화 된 핵심 데이터 는 iCloud 를 통한 동기화를 켭니다. Core Data에 저장 한 모든 변경 사항은 클라우드로 전파되고 클라우드에서 변경된 사항은 자동으로 다운로드됩니다. 데이터는 iCloud와 로컬 영구 저장소 파일 모두에 저장되므로 기기가 오프라인 일 때도 사용할 수 있습니다. 클라우드 관련 코드를 작성할 필요가 없으며 들어오는 변경 사항에 대한 수신 대기를 추가하기 만하면됩니다 (다른 관리 개체 컨텍스트에서 변경된 사항과 매우 유사 함).
  • CloudKit은 핵심 데이터와 관련이 없습니다. 동기화 시스템이 아니라 전송 시스템입니다. 즉, 클라우드 데이터를 읽고 쓸 때마다 명시적인 CloudKit API 호출을 수행해야합니다. 자동으로 아무 일도 일어나지 않습니다. CloudKit은 장치에 데이터를 저장하지 않으므로 장치가 오프라인 인 경우 데이터를 사용할 수 없습니다. CloudKit은 또한 공개 공유 데이터 및 전체 데이터 세트가 아닌 일부 데이터 세트 만 다운로드하는 기능과 같이 iCloud를 통해 Core Data에서 사용할 수없는 일부 기능을 추가합니다.

Core Data와 함께 CloudKit을 사용하려면 관리되는 개체와 CloudKit 레코드간에 변환하는 사용자 지정 코드를 작성해야합니다. 불가능하지는 않지만 더 많은 코드를 작성해야합니다. 그것은 더 신뢰할 수 있지만, 확실히 말을 너무 빨리이다.

과거에 Core Data와 iCloud를 사용 해본 적이 있는 사람의 관점에서 CloudKit을 설명 하는 블로그 게시물을 작성 했습니다 .

업데이트 , 2016 년 6 월 :에 대한 최신 문서에서NSPersistentStoreCoordinator iCloud를 사용하는 핵심 데이터와 관련된 모든 항목이 더 이상 사용되지 않는 것으로 표시됩니다. 결과적으로 새로운 개발에서는 피해야합니다.


답변

iOS 13에서 Apple은 CloudKit과 더 잘 작동하기 위해 Core Data의 새로운 기능을 발표했습니다. 주요 추가 사항은 기본적으로 Core Data와 CloudKit 간의 동기화를 관리하는 NSPersistentCloudKitContainer 입니다.

WWDC 세션 Using Core Data with CloudKit 에서 자세히 알아볼 수 있습니다 .

Apple은 또한 이러한 용도에 대한 멋진 문서 모음을 발표했습니다 . CloudKit으로 Core Data 저장소 미러링 .


답변