2017-11-23 4 views
0

현재 고객 데이터를 CoreData 데이터베이스에 저장하는 macOs 응용 프로그램을 만들고 있습니다.iCloud에 CoreData 저장

이제 해당 데이터를 iCloud에 저장하려고합니다. 아이디어는 모든 사용자가 자신의 iCloud에 자체 데이터를 가지고 있다는 것입니다. Mac/iOS 장치를 두 개 이상 사용하는 경우 자신의 데이터에 액세스 할 수 있습니다.

저는 모든 고객을위한 중앙 집중식 데이터 저장소가 아니라 각 고객 별 데이터 저장소를 별도로 제공합니다.

내가 CloudKit에 관한 몇 가지 주제를 통해 읽을 수 있지만 일반적으로 그것에 대해 혼란스러워했다 :

  • CloudKit 글로벌 데이터에 대한 데이터 저장 (예를 들어, 내가 고객의 데이터를 저장할)를 제공는
  • 인가 거기 CoreData를 모든 고객의 iCloud 계정에 전달할 수 있습니까?
  • CloudKit에서 가능하다면 어떻게해야합니까? 아니면 Ensembles와 같은 타사 라이브러리를 사용해야합니까? (애플이 iCloud를 통해 CoreData를 사용할 수있는 가능성을 일축했지만, Ensemble과 같은 서드 파티 라이브러리 만이 지금 작동 할 것이라고 말하는 2016 년 실이 있었다.)

누군가이 경험을 나에게 줄 수 있습니까?

+0

그러므로 그것은 사용자 관련 데이터는 다른 아이 클라우드 사용자간에 데이터를 공유 할 수있는 직접 게이트웨이가 없을 것입니다 저장소에 이상적입니다; 즉, 귀하의 개념에 맞는 경우에 당신이 실제로 걱정 __must__ 유일한 것은 당신이 의도했던이 CoreData의 충돌을 해결하는 방법입니다; 나머지는 찻잔에 폭풍우가 난다. – holex

+0

@ 홀렉스 정확히 내가 원하는 것입니다. 특정 iTunes/iCloud 계정의 사용자는 자신의 데이터 만 볼 수 있습니다. 따라서 CloudKit을 사용하여이 작업을 수행 할 수 있습니까? Ensemble과 같은 솔루션을 제안 하시겠습니까? 당신의 가장 큰 도전은 단지 CoreData에 _conflicts_ 해결하기위한 정책을 수립되는 경우 –

+0

후 그냥 응용 프로그램의 iCloud를 용기에 데이터베이스를 저장해야하고 다른 모든이 백그라운드에서 아이폰 OS에 의해 관리됩니다 때문이다. 그에 대한 제 3 자 물건을 사용하지 않는 것이 좋습니다 - 당신이 그냥 필요하지 않습니다 단순히 때문에 그것은 복잡성 (IMHO)을 증가시킬 것이다. – holex

답변

1

CloudKit은 매우 광범위 해 주셔서 감사합니다. 그것은 세 가지 유형의 데이터베이스를 제공합니다 :

  1. 공개. 모든 사람이 공유 할 수 있습니다.
  2. 개인 정보. 하나의 iCloud 계정에만 적용됩니다.
  3. 누군가의 개인 데이터베이스이지만 액세스 권한이 부여 된 공유입니다.

이렇게하면 많은 옵션이 제공되며 단일 iCloud 사용자의 기기간에 데이터가 공유되는 곳은 개인 데이터베이스에 적합합니다. 즉, CloudKit은 당신을 위해 아주 잘 작동 할 것입니다.

다른 사람들이 이미 언급했듯이 CloudKit은 장치간에 데이터를 이동하는 데 필요한 온라인 저장소를 제공하지만 완전한 메커니즘을 제공하지는 않습니다. 그것이 Ensembles과 같은 프레임 워크가 들어오는 곳입니다. 이들은 CloudKit 및 기타 서비스를 기반으로 구축되어 두 장치를 시간과 공간에서 분리하여 유지하는 데 관련된 모든 부기를 처리합니다. (Disclaimer : 저는 Ensembles 프레임 워크의 개발자입니다.)

Ensembles와 같은 프레임 워크를 사용할 필요는 없습니다. CloudKit과 직접 통신 할 수는 있지만 핵심 데이터와 완전히 동기화되는 앱을 개발하는 데 소요되는 시간과 기술을 과소 평가해서는 안됩니다. 데이터 세트에 따라 많은 문제가 발생할 수 있습니다.앙상블과 유사한 프레임 워크는 당신을 위해 많은 작업을 수행합니다

  • 보장 변화가 오래되고 중복 된 데이터를 제거 두 개의 서로 다른 장치
  • 에 동시 변경 처리 모든 장치
  • 에 같은 순서로 다시
  • 상태 유지를 재생 iOS에서 매우 중요한 일괄 처리를 제공하여 메모리 사용량이 낮습니다.

간단히 말해서 직접 할 수는 있지만 권장하지 않습니다. 당신이 코어 데이터 동기화를 원하는 경우에, 나는 앙상블을 추천, 또는 Seam 같은 다른 도서관에서 볼 (I이 사용하지 않은,하지만 인기 보인다).

코어 데이터와 결혼하지 않은 경우 동기화 문제 및 클라이언트 API를 효과적으로 처리하는 RealmFirebase과 같은 옵션을 볼 수 있습니다.

데이터베이스가 사용자의 아이튠즈 계정으로 아이 클라우드에 격리됩니다
+0

답해 주셔서 감사합니다. Realm과 Firebase는 개인용 데이터베이스 시나리오가 가능합니까? –

+0

나는 그들과 어떤 경험이없는,하지만 난 네, 그렇게 생각합니다. –