如何避免大型CKAssets的重新传输,跟随其他数据更新

Posted

技术标签:

【中文标题】如何避免大型CKAssets的重新传输,跟随其他数据更新【英文标题】:How to avoid the retransfer of large CKAssets, following other data updates 【发布时间】:2016-10-29 15:48:58 【问题描述】:

我有一个存储为 CKAsset 的大图像,作为记录的一部分,其中还包含可能会更改的日期和其他详细信息。图片和其他详细信息都存储在我的应用本地。

如果我更改日期(例如)并尝试将记录重新提交给 CloudKit(通过创建新记录、设置其数据字段并使用 CKModifyRecordsOperation),则似乎 CKAsset 数据被重新上传并随后下载到所有设备。

如果我尝试不在记录中设置 CKAsset 信息,我会收到“修改某些记录失败”错误消息。

如何避免不必要的图像传输(我不担心其他数据被不必要地发送,因为它很小)?

我是否应该将 CKAsset 存储到单独的链接记录中,这样我只需要在图像更改时下载图像吗?

【问题讨论】:

我不一定知道最佳实践,但我处于类似情况,并且我确实为图像设置了单独的记录。作为单独的记录,我将其设置为后台下载CKSubscription,以便客户端应用程序仅在图像更改时才可以通知下载。 我最终也将图像分开存储,只花了一两个小时来转换,但现在我可以控制一切。 【参考方案1】:

为避免不必要的大数据块传输,您可以将图像存储在单独的记录中。

这样,小数据项(可能会经常更新)可以更频繁地同步,而不会对您的数据上限产生不利影响。

【讨论】:

以上是关于如何避免大型CKAssets的重新传输,跟随其他数据更新的主要内容,如果未能解决你的问题,请参考以下文章

如何有效使用 CloudKit 每日 25mb 的传输限制

CKAssets 的 CKQuery 很慢

跟随其他大公司步伐 Microsoft放弃手枪表情符

如何避免在 PHP 7 中的每个文件上重新声明刻度

当 Fortran 生成大型内部临时数组时,如何避免堆栈溢出?

动画 calayers 不断跟随手指位置