热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何有效地同步CoreData和CloudKit之间的记录

如何解决《如何有效地同步CoreData和CloudKit之间的记录》经验,为你挑选了3个好方法。

我目前正在学习如何使用CloudKit Framework以及缺少显示如何同步Core Data和CloudKit的文档或示例.

我观看了所有WWDC视频(2014年,2015年,2016年)专门介绍CloudKit,但没有人告诉我们如何实现与Core Data的同步.我找不到任何新的示例,教程或书籍,展示了如何实现此同步.

我知道使用CloudKit的Operations API(不是Convenience API)和订阅更新是有效的,就像在新的WWDC 2016视频中所说的那样,专用于CloudKit,但使用CoreData进行映射是一个真正的问题.

例如,假设我想创建一个类似于Notes应用程序的应用程序.离线时,用户可以创建他的笔记并与他们一起工作,将他们保存到他的核心数据库中.当设备上线时,应用程序会检查服务器上的更改并将新创建的记录保存到服务器(CloudKit).

当应用程序启动时,它还会从CloudKit获取更改,如果有更改,它会使用新更改更新本地缓存(核心数据).

我希望有一个共同的同步模式.在哪里与Core Data方法同步以及它们应该如何?

非常感谢有关此的任何信息或帮助.

我正在使用Swift 3,Xcode 8,iOS 10.



1> Owen Godfrey..:

核心数据已经为用户提供了同步到iCloud的能力.没有必要使用CloudKit.

在iCloud中设计核心数据

但是,使用iCloud的Core Data已被弃用.即便如此,它还没有停产,苹果公司没有立即停止计划,他们只是想阻止它的使用.但它也存在合理化来自多个设备的更新的问题.

无论如何,我一直在研究如何使用云套件来解决这个问题.两个答案; 首先是使用以下内容;

在GitHub缝

第二是手动完成;

设计CloudKit

关键在于Cloud Kit需要记录元数据才能可靠地处理记录更新,因此您必须将该元数据保存在Core Data数据库中.该CKRecord类包含一个方法encodeSystemFields(用:)这将编码这些字段转换为可存储在数据库中的数据记录,然后当你需要恢复CKRecord您可以使用相应的解码器.

无论如何,我即将开始自己这样做.当我拥有它时,我会用更多信息更新它.


自iOS 10起,不推荐使用CoreData iCloud。

2> Jake3231..:

苹果公司最近发布了一份指南,似乎可以回答这个问题。查看Apple 维护CloudKit记录的本地缓存以了解如何在设备上存储CloudKit数据。

虽然本指南未提供要写入设备的示例代码,但确实回答了其余问题。这告诉您如何从CloudKit中获取更改并创建可以存储在设备上的数据。



3> Simon Backx..:

从iOS 13开始,有新的API可以简化开发人员的同步。我建议您观看WWDC19会话,了解CoreData和CloudKit之间的新同步。请注意,这些新API仅适用于iOS 13+。

视频:https : //developer.apple.com/videos/play/wwdc2019/202/

简而言之,您需要开始使用NSPersistentCloudKitContainer而不是NSPersistentContainer。这将使同步使用自动冲突解决方案和最后作者获胜的合并策略自动进行。如果您想构建一个运行良好的应用程序,则还需要进行一些修改以改善应用程序的同步。

官方文档可以在以下位置找到:

使用CloudKit设置核心数据

将核心数据存储与CloudKit同步


协作的数据建模(无冲突的复制数据类型)

在会议结束时,他们还展示了一个比默认的“最后作家胜出的合并策略”更好的同步合并的示例。使用因果树可让多个用户编辑同一字符串(并扩展某些类型的其他数据)而不会丢失任何数据。我真的建议大家阅读Archagon的这篇文章,其中描述了它的工作原理和实现方式(也包括CloudKit同步,但不是自动的)。如会话中所示,您还可以通过CoreData和CloudKit之间的新自动同步来实现这一点。


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 寻求更强大的身份和访问管理(IAM)平台的企业正在转向云,并接受身份即服务(IDaaS)的灵活性。要为IAM选择正确的场外解决方案,业务管理人员和IT专业人员必须在实施之前评估安全 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
哓尐_271
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有