ios - 将数据从文档存储更改为 CloudKit

标签 ios swift cloudkit ckrecord

我有一个对象数组,我当前存储在我的应用程序沙箱的文档目录中。我想将这些数据备份到用户的云中,并允许具有相同 iCloud 帐户的多个用户共享数据,并在有人更改某些内容时启用推送通知。这是一个预算应用程序,所以如果您的配偶购买了东西并将购买输入到应用程序中,您将收到推送通知。我听说 CloudKit “非常简单”,所以我认为这将是一个很好的解决方案。我想不出一个好方法来将这个支出数据数组加载到 Record 结构中。

例如,我有 100 笔交易(每笔交易都有日期、金额和描述)。现在它们存储在自定义对象 SpendingData 的数组中。我是否必须遍历所有这些交易并在 Cloud 仪表板中为每个交易创建唯一的记录?这不会杀死(或至少降低)我的应用程序吗?有一个更好的方法吗?谢谢!

最佳答案

我认为处理这些交易的最佳方式仍然是为每笔交易单独记录。然后,当有新交易时,您只需写入 1 条记录,您的家人就会收到该新交易的推送通知。然后,您可以在推送通知中包含该事务的一些数据。类似于:“AAA 为 BBB 添加了一项新交易”

为了保持应用程序的响应能力,您应该将这些事务保存在内存中并将它们写入磁盘(核心数据或文件),以便在应用程序重新启动时您可以加载它们,并且您的应用程序将拥有所有可用数据,而无需等待从互联网上获取。

关于ios - 将数据从文档存储更改为 CloudKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30062698/

相关文章:

ios - 为什么 ubiquityIdentityToken 总是为零?

ios - 如何防止在屏幕上通知用户有关 CloudKit 的新更改?

ios - 确定所有 UIPanGestureRecognizer View 何时完成平移

ios - 面临可达性 IOS Swift 的问题

ios - 我如何使用 dynamicType 在 swift3 中执行 "perform(selector:)"

ios - UITableView 在一个地方取消 reloadData 上的键盘,但在另一个地方不取消键盘?

ios - (Swift) 应用内购买 Wi-Fi 错误

swift - 无法使用类型为 'value' 的参数列表调用 '(String)'

ios - Swift 3 使用 UINavBar 按钮显示以编程方式创建的 datePicker

ios - com.apple.developer.icloud-container-identifiers 和 com.apple.developer.ubiquity-kvstore-identifier 之间的区别