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


111

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

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

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

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

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

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

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

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

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

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

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

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


2
나는 그것에 대해 그렇게 많이 조사하지 않았지만 그것이 지역에 저장되지 않는다는 것을 이해했습니다. 일반 서버 클라이언트 서비스와 비슷합니다. 그래서 인터넷이 없으면 DB에 액세스 할 수 없습니다. 그리고 그 당시 사용자가 icloud 계정을 활성화하지 않은 경우 문서에 따라 공용 컨테이너에서만 데이터를 읽을 수 있습니다
Sachin

우리가 같이 할 수 @Yan 것은, 제안하십시오 stackoverflow.com/questions/25600556/...
Nikunj

답변:


183

다음과 같습니다.

  • 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를 사용하는 핵심 데이터와 관련된 모든 항목이 더 이상 사용되지 않는 것으로 표시됩니다. 결과적으로 새로운 개발에서는 피해야합니다.


1
과거에는 iCloud에서 Core Data를 사용할 때 손상 문제가 있었지만 iOS 7이 나온 이후로는 많이 사용하지 않았습니다. 훨씬 나아질 것입니다. CloudKit을 사용하면 아직 공식적으로 출시되지 않았기 때문에 말하기에는 너무 이르다.
Tom Harrington

3
@Tom Harrington-iOS 8 용 iCloud에서 Core Data를 사용해보고 감상을 알려주시겠습니까? iOS 7에서도 많은 손상을 경험했으며 Apple 지원에서 많은 버그를 확인했습니다. iOS 8의 안정성이 허용 가능한 수준으로 향상되기를 바라지 만 전문가 인 여러분의 의견을 듣고 싶습니다.)
hyouuu 2014 년

1
CKSIncrementalStore를 확인하십시오. github.com/CloudKitSpace/CKSIncrementalStore
Nofel Mahmood 2015-06-21

3
"클라우드 관련 코드를 작성할 필요가 없습니다. 들어오는 변경 사항에 대한 수신 대기를 추가하기 만하면됩니다 (다른 관리 개체 컨텍스트에서 변경된 사항과 매우 유사 함)." -이 주석에 대한 코드 샘플 / 예제가 있습니까? 내가 찾을 수있는 확실한 예는 없습니다. (
Ernest

1
@TomHarrington은 왜 우리가해야 할 일은 문서를 확인하는 것이라면 stackoverflow가있는 이유를 피드백합니다 :(
Ernest

14

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.