加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – CKFetchRecordsOperation永远不会返回任何键

发布时间:2020-12-14 05:30:46 所属栏目:百科 来源:网络整理
导读:我的公共(开发)数据库中有一条记录,有几个填充字段.当我使用CKFetchRecordsOperation获取该记录时,获取成功,但生成的CKRecord始终不包含任何键.无论我是在我的fetch操作中明确设置desiredKeys还是将其保留为nil,都会发生这种情况.记录及其密钥长期保持不变,
我的公共(开发)数据库中有一条记录,有几个填充字段.当我使用CKFetchRecordsOperation获取该记录时,获取成功,但生成的CKRecord始终不包含任何键.无论我是在我的fetch操作中明确设置desiredKeys还是将其保留为nil,都会发生这种情况.记录及其密钥长期保持不变,因此不是传播延迟.

公共数据库中只有一条记录,其ID与我得到的记录相符,所以我确信正在记录正确的记录;它从来没有任何钥匙.例如,以下代码始终打印键:[].

let op = CKFetchRecordsOperation(recordIDs:[...])
op.desiredKeys = [...] // commenting this has no effect
op.fetchRecordsCompletionBlock = {records,error in
    if let e = error {
        print("error:",e)}
    for (id,r) in records ?? [:] {
        print("keys:",r.allKeys())}}
db.addOperation(op)

我也试过通过下标表示法访问各个键,但它们总是为零.我此刻不知所措.没有错误,我想要的记录被发现,为什么没有任何密钥?

更新:我注意到CloudKit仪表板总是在左下角显示“重新编制索引”,即使在我上次更改后的几天内也是如此.此外,我尝试创建第二条记录(通过仪表板),并且在留出足够的时间进行传播后,我的提取甚至无法找到它.

在关于此问题的链接从this SO question到Apple developer forum thread之后,我发现一个帖子表明它只发生在包含Asset字段的记录中.我会在有空的时候尝试尝试,虽然在这种情况下我无法避免使用资产,所以它可能没什么帮助.

更新2:我尝试重置我的开发环境,然后重新创建与以前相同的记录.从好的方面来说,CloudKit仪表板中的“重新索引”消息终于消失了.不幸的是,我的代码现在无法找到我的任何记录,即使代码保持不变并且我已经对所有内容进行了三重检查.

我也尝试创建一个没有Asset字段的记录类型(参见上面的第一个更新),但它似乎没有改变任何东西.

事实证明,当我想要的记录属于公共记录时,我正在查询私人数据库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读