2017-03-15 5 views
9

현재 CloudKit Framework 사용 방법과 Core Data 및 CloudKit 동기화 방법을 보여주는 설명서 또는 예제가 부족합니다.Core Data와 CloudKit 간의 레코드를 효율적으로 동기화하는 방법

CloudKit 전용 WWDC 비디오 (2014, 2015, 2016)를 모두 보았지만 핵심 데이터와 동기화하는 방법을 알려주지는 않았습니다. 이 싱크를 구현하는 방법을 보여주는 신선한 예제, 튜토리얼 또는 책을 찾을 수 없습니다.

CloudKit (편의 API가 아님)에 의해 Operations API를 사용하고 CloudKit 전용의 새 WWDC 2016 비디오에서 변경 사항을 구독하는 것이 효과적이지만 CoreData로 매핑하는 것이 실제로 문제가된다는 것을 알고 있습니다.

예를 들어 Notes 앱과 비슷한 앱을 만들고 싶습니다. 오프라인 상태에서 사용자는 자신의 노트를 작성하고 함께 작업하여 코어 데이터 데이터베이스에 저장할 수 있습니다. 기기가 온라인 상태가되면 앱은 서버에서 변경된 내용을 확인하고 새로 생성 된 레코드를 서버 (CloudKit)에 저장합니다.

앱이 시작되면 CloudKit의 변경 사항도 가져오고 변경 사항이 있으면 로컬 캐시 (코어 데이터)를 새로운 변경 사항으로 업데이트합니다.

나는 일반적인 동기화 패턴을 가지고있어 주셔서 감사합니다. 핵심 데이터 메소드와 동기화 할 위치와 모양은 어떻게해야합니까?

이 정보 나 도움에 감사드립니다. 내가 스위프트 3, 엑스 코드 (8), 아이폰 OS (10) 사용하고

+0

Adelmaer, cloudkit에는 메타 데이터가 저장되어있는 레코드, 마지막 업데이트, 마지막 액세스 권한, 사용 권한 등이 저장됩니다. 핵심 데이터에이 데이터를 복사하고 연결할 때 교차 체크를 수행하여 업데이트가 있는지 확인할 수 있습니다. 당신은 또한이 SO 응답을보아야합니다. 여기에 뭔가있을 수 있습니다. http://stackoverflow.com/questions/24509782/saving-modified-data-in-cloudkit?rq=1 – user3069232

답변

4

코어 데이터는 이미 iCloud에 동기화 할 수있는 기능을 사용자에게 제공합니다. CloudKit을 사용할 필요가 없습니다.

Design For Core Data In iCloud

그러나 예, 아이 클라우드와 코어 데이터는 더 이상 사용되지 않습니다. 그럼에도 불구하고, 그것은 not been discontinued을 가지고 있으며 사과를 중단하라는 즉각적인 계획은 없으며 단지 그 사용을 막으려 고합니다. 그러나 여러 장치에서 업데이트를 합리화하는 데에도 문제가 있습니다.

어쨌든 나는 클라우드 키트로이 작업을 수행하는 방법에 대해 궁금해했습니다. 두 가지 대답; 첫 번째는 다음을 사용하는 것입니다.

Seam in GitHub

번째는 수동으로 할 것이다; 여기

Designing for CloudKit

의 핵심은 클라우드 키트는 당신이 당신의 코어 데이터 데이터베이스에 메타 데이터를 저장해야하므로, 안정적으로 기록 업데이트를 처리 할 수 ​​있도록 기록 메타 데이터를 필요로한다는 것이다. CKRecord 클래스에는 이러한 필드를 데이터베이스에 저장할 수있는 데이터 레코드로 인코딩하는 방법 encodeSystemFields(with:)이 포함되어 있으며 CKRecord를 복원해야 할 때 적절한 디코더를 사용할 수 있습니다.

어쨌든, 나는이 일을 직접 시작하려고합니다. 내가 가지고있을 때 이것을 더 많은 정보로 업데이트 할 것이다.

+0

맹세 할 수는 없지만 생각하지 않습니다. 핵심 데이터가 iCloud 공유를 할 수 있으므로 CloudKit을 사용하여 구현해야하는 기능이 필요합니다. – Jonny

+0

CoreData iCloud는 iOS 10 이후로 더 이상 사용되지 않습니다. – Andy

+0

내 대답의 세 번째 줄에 나와 있습니다. 그것이 결코 작동하지 않는다고 말하는 것은 어리석은 짓을 제외하고는. 그러나 그렇습니다, 지금 그 문제를 해결하는 더 좋은 방법이 있습니다. –

0

Apple은 최근이 질문에 대답하는 것으로 보이는 가이드를 게시했습니다. CloudKit 데이터를 장치에 저장하는 방법을 보려면 Apple의 Maintaining a Local Cache of CloudKit Records을 확인하십시오.

이 가이드는 장치에 쓰는 샘플 코드를 제공하지 않지만 나머지 질문에 답합니다. 이것은 CloudKit에서 변경 사항을 가져 오는 방법과 장치에 저장할 수있는 데이터를 만드는 방법을 알려줍니다.