- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的问题与 WWDC 2014 Advanced CloudKit 中命名的“Delta Download”有关。
我正在尝试为我的 Core Data 应用程序进行同步,该应用程序目前仅适用于 iPhone(想想:只有一台设备处于事件状态)。因此,基本上,对于目前的大多数情况,该应用程序将从同一台设备将用户记录存储在云中。
我无法理解基于 CKFetchRecordChangesOperation
又名 Delta 下载的自定义区域功能。
正如我所说的那样,我们有 CKServerChangeToken
来维护同步操作(我的意思是只下载那些被另一台设备添加/修改/删除的记录),正如 WWDC 上所展示的那样。但是,我无法理解的是,我们仅在 CKFetchRecordChangesOperation
之后收到该 token ,当我们将记录保存到云中时,我们没有获得新 token 。
如果我们使用当前可用的 token 进行提取(因为它仅在提取后更改),我们会收到从之前的保存操作中保存的记录。基本上我们得到了我们设备上已有的保存记录。为什么?我在这里遗漏了什么?
如果我们将一些数据(从设备 A)播种到云端会怎么样,这对于设备 B 正在获取区域记录的情况是合理的,但是如果设备 A 呢?重新下载所有记录?
我在 CKRecord
中找到了 recordChangeTag
,这是我可以用来解决与本地对象冲突的属性吗 - 获取的对象(相同或不同版本),如果可以的话有人给我举例说明我需要如何执行此操作:在第一次将记录保存到 CloudKit 时将 recordChangeTag 保存到 Core Data 或者如何保存?
缺乏文档真是令人头疼。
最佳答案
我找时间写了这个问题的答案。我不会深入实现,但会讨论这个概念。
CloudKit 提供了一种在您的设备和 CloudKit 服务器之间进行数据同步的方法。在我的案例中,我仅使用 iPhone 和服务器建立同步过程(同样,如果您有 iPhone + iPad 应用程序,该过程需要更多步骤。):
我在私有(private)云数据库中有自定义区域。我使用 OperationQueue 来建立相互依赖的不同异步进程。一些操作有自己的操作队列。
步骤:
1) 检查我的自定义区域是否存在
1.1) 如果没有自定义区域
1.2) 创建新的自定义区域。 (可选:添加记录)
1.3) 刷新区域更改 token
You can refresh zone change token by: performing
CKFetchRecordChangesOperation
,fetchRecordChangesCompletionBlock
returnsCKServerChangeToken
save it to UserDefaults (for example) using NSKeyedArchiver). This operation's task is to refresh token and it's performed at the end synchronisation process.
2) 如果已经有自定义区域
2.1) 使用先前保存的区域更改 token 从区域获取更改。 (CKFetchRecordChangesOperation
)
2.2) 更新和删除本地记录。
2.3) 刷新区域更改 token 。
2.4) 检查本地更改(我使用上次云同步时间戳检查之后修改了哪些记录)。
2.5) 上传记录到云包数据库
2.6) 再次刷新区域更改 token 。
我强烈推荐 Nick Harris 文章系列:https://nickharris.wordpress.com/2016/02/09/cloudkit-core-data-nsoperations-introduction/
您会在那里找到实现和设计概念。值得一读。我希望有人会发现所有这些都有帮助。
关于ios - CloudKit:CKFetchRecordChangesOperation、CKServerChangeToken 和 Delta 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37061665/
我想使用 spark sql 在 Delta 表中添加一些列,但它显示如下错误: ALTER ADD COLUMNS does not support datasource table with ty
在增量表中存储我的数据帧时,为我的数据帧寻找有效的分区策略。 我当前的数据帧 1.5000.000 rowa 将数据从数据帧移动到增量表需要 3.5 小时。 为了寻找更有效的写作方式,我决定尝试将我的
我想知道,是否可以更新增量表分区列的“值”? 该表按特定列分区,现在我想更新该特定列的值。我可以这样做吗? (在 slack 上找到) 最佳答案 使用 replaceWhere 选项。 引用官方文档
考虑排序数组a: a = np.array([0, 2, 3, 4, 5, 10, 11, 11, 14, 19, 20, 20]) 如果我指定左右增量, delta_left, delta_righ
当我们运行 VACUUM 命令时,它是遍历每个 parquet 文件并删除每条记录的旧版本,还是保留所有 parquet 文件,即使它有一个最新版本的记录?压实呢?这有什么不同吗? 最佳答案 Vacu
如果我想使用 delta time-travel 来比较两个版本以获得类似于 CDC 的更改,该怎么做? 我可以看到两个选项: 在 SQL 中,您有 EXCEPT/MINUS 查询,您可以将所有数据与
我想在 python 中对给定的输入和输出数据进行敏感性分析。输入参数的设计是基于拉丁超立方体的,所以我决定使用SALib的delta模块。我找不到一些文档,返回参数 delta、delta_conf
我正在尝试在 CUDA 中实现前馈神经网络。到目前为止,我用过 Jeff Heaton's YouTube videos作为推断算法和实现它们的指南。我不清楚一件事: 希顿在他的 Gradient C
我正在阅读下面关于 First Search Program - Artificial Intelligence for Robotics 的代码,我对下面这两行的工作稍作停留: x2 = x+del
我将一年以上的行作为增量表归档到 ADLSv2 中,当需要报告该数据时,我需要将归档数据与本地数据库中现有的一些表连接起来。有没有一种方法可以在不从云中重新水化或将数据水化到云的情况下进行连接? 最佳
Delta Lake 在哪里存储表元数据信息。我在我的独立机器上使用 spark 2.6(不是 Databricks)。我的假设是,如果我重新启动 spark,将删除在 delta lake spar
我按照@提到的步骤操作:http://wiki.apache.org/solr/DataImportHandler 我还尝试了来自 stackoverflow 的其他解决方案,但仍然无法正常工作。 问
是否可以在本地实现三角洲湖?如果是,需要安装什么软件/工具? 我正在尝试在内部实现一个 delta 湖来分析一些日志文件和数据库表。我当前的机器装有 ubuntu,apache spark。不确定还需
Delta Lake 每 10 个版本自动创建一个检查点。有没有办法手动创建检查点? 最佳答案 import org.apache.spark.sql.delta.DeltaLog DeltaLog.
虽然分析似乎无法避免存储到“delta”的值不被读取...我的循环的哪一部分不起作用,为什么? #include #include int main() { float a, b, c;
不幸的是,我认为错误并不是让他自动更新了delta 我在“数据库”中有这个表插件 # in MySQL CREATE TABLE sph_counter ( counter_id INTEGER PR
是否可以使用 Delta Live Tables 来执行增量批处理? 现在,我相信这段代码将始终在运行管道时加载目录中的所有可用数据, CREATE LIVE TABLE lendingclub_ra
我有一个包含数百万行和多个不同类型的列的增量表,包括。嵌套结构。我想在运行时创建增量表的空 DataFrame 克隆 - 即相同的模式,没有行。 我可以读取架构而不读取表的任何内容吗(这样我就可以基于
我有一些历史期权价格,我正在尝试确定隐含的 delta。 我有: 1) strike 2) call/put 3) stock price 4) dividend 5) interest rate 6
梯度下降和 delta 规则有什么区别? 最佳答案 没有数学:delta 规则使用梯度下降来最小化感知器网络权重的误差。 梯度下降是一种通用算法,它逐渐改变参数向量以最小化目标函数。它通过向阻力最小的
我是一名优秀的程序员,十分优秀!