问题标签 [ckquery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
254 浏览

swift - CloudKit:查询返回部分结果,没有错误

我有某种 CloudKit 索引问题。当我使用 CKModifyRecordsOperation 将记录保存到 iCloud 时,modifyRecordsCompletionBlock 不会返回任何错误。当我使用 NSPredicate(value: true) 或 Dashboard 查询这些记录时,大多数情况下它会丢失一两条记录。

假设我上传了 5 条记录(没有错误),等待一段时间(~15 秒)以确保索引已更新,然后查询它们(通过仪表板或应用程序的 CKQueryOperation)。大多数情况下,它会显示 5 条记录中的 4 条记录。同样,没有错误。记录在 customZone 的 privateDB 中。

奇怪的是:我总是能够通过在“获取”菜单下的仪表板(开发)中手动键入记录名称来获取查询未返回的记录。所以它存储它们,只是不查询。当我删除仪表板中的索引并重新分配它们时,仪表板查询将开始返回所有结果(以前也省略了记录),但是在再上传几次后,查询中又会开始丢失一些结果。

这是我的 CKModifyRecordsOperation:

我尝试了记录字段(最初是日期、资产和参考),试图查看是否有任何字段出现问题。但即使我删除了所有字段(创建一个没有额外字段的记录,只是系统元数据),问题仍然存在。我没有包含 CKQueryOperation 代码,因为 Dashboard 的行为方式与应用程序相同。

有任何想法吗?

编辑:这是我的获取功能的基本内容:

0 投票
1 回答
588 浏览

cloudkit - 查询系统字段时出现CKError:拒绝“未知字段'createdAt'”

我正在对createdAt系统字段进行排序,如下所示:

并得到以下错误:

CKError 0x1c4447fb0:“无效参数”(12/2018);服务器消息 = "未知字段'createdAt'"; uuid = 9C450848-2449-4892-93BC-C46363203042;容器 ID = "...

我能够查询和排序我以这种方式创建的字段。系统领域有什么不同吗?该字段的索引是可排序和可查询的。

0 投票
1 回答
79 浏览

cloudkit - 使用 CKQueryOperation 和 CKReference 获取大集合

我有一个 CKReference 附加到链接到一个 CKRecord 的 4000 条记录。他们没有行动(CKReferenceActionNone)。
我希望能够使用 NSPredicate 的 CKQueryOperation 来获取所有这些记录,如下所示:

CKReference* recordToMatch = [[CKReference alloc] initWithRecordID:backupRecord.recordID action:CKReferenceActionNone]; NSPredicate* predicate = [NSPredicate predicateWithFormat:@"parentRecord == %@", recordToMatch];

通常,当我使用 CKQueryOperation 时,我可以使用 CKQueryCursor 循环它以获取超过 100 条记录。但是使用 CKReference,它首先工作 100,然后工作 200,但之后没有返回游标。

有没有办法使用 CKReference 获取 4000 条记录?

非常感谢!

0 投票
0 回答
27 浏览

ios - 使用 currentUserRecordId.recordName 哈希而不是“__defaultOwner__”查询 cloudkit

查询当前用户创建的记录时,currentUserRecordID.recordName 中的值为“____defaultOwner__”

有没有办法告诉 cloudKit 在结果中返回真正的哈希键而不是“____defaultOwner____” ?

我考虑用 currentUserRecordID.recordName 替换“手动”defaultOwner 字符串,但在此之前,我想检查一下 cloudKit 服务器是否有“简单”的方式来执行此操作。

0 投票
1 回答
102 浏览

ios - CKQuery Perform 仅获取在应用程序启动之前创建的记录

我有我一直在研究的 iOS 和 macOS 应用程序。使用 iOS 应用程序,用户在使用 macOS 应用程序接收数据时将数据发送到 iCloud Drive。以下代码行来自 macOS 应用程序。

所以我只是整理了一些带有日期的记录并获取最新的记录,而不是获取所有记录。

问题是应用程序启动后不会收到已上传到 iCloud Drive 的记录。即使我等了几分钟,应用程序也不会得到最新的。如果我退出应用程序然后重新启动它,它将获得最新的。事情是这样运作的吗?我希望不是。有什么我不知道的技巧吗?谢谢。

ps 我读过这个话题。我不认为这与我的有关。

0 投票
1 回答
59 浏览

objective-c - Couldkit 查询和在 CKReference 字段上使用谓词的问题

我对 CKQuery 的工作原理有一个基本的误解。

我有 2 种记录类型:

  1. Friends : 包含字段
    • url_of_profile_pic
    • 姓名
    • ...
  2. 投票:包含字段
    • date_of_vote
    • target_of_the_vote(朋友 CK 参考)
    • the_one_who_vote(cloudkit 用户 ID)

当我在投票表上查询时,我只是想知道如何获得url_of_profil_pic

基本上,想要这样的东西:

此行将是给我 URL 的谓词。

0 投票
1 回答
56 浏览

cloudkit - 带有今天日期的 CKQuery

真的很重视一些支持。

我正在设计一个 tvOS 应用程序,它在 tableView 中显示某些 CloudKit 内容,数据因当前日期而异。

每个日历日期对应于该类型中的数据。

例如,RecordType“A13032019”与 2019 年 3 月 13 日有关。

我使用 ViewDidLoad (generateDate():

*

函数生成日期(){

然后我尝试使用 generateOperationalData 在下面的 CKQuery 中运行:

函数查询数据库(){

当我尝试运行它时,它会抛出一个线程错误,原因是“ *由于未捕获的异常'CKException'而终止应用程序,原因:'recordType 不能为空'*

所以在我看来,queryDatabase 函数在 generateDate 函数之前运行,但是我尝试延迟 queryDatabase 函数,这仍然会引发相同的错误!

无论如何我可以在queryDatabase函数运行之前生成日期(通过generateDate)吗?

谢谢

0 投票
0 回答
66 浏览

ios - Cloudkit 查询数组大小 == 0

我正在用 Cloudkit 进行查询操作,我的记录类型是这样的:

现在,我想查询所有没有朋友的人。我试过了

第一个因警告而崩溃

Friends[SIZE] 不是评估对象表达式

第二个返回错误

无效的谓词

那么,查询数组大小的正确方法是什么?

0 投票
1 回答
151 浏览

swift - 如果结果限制小于 1000,为什么我的 CKQueryOperation 只会返回游标?

CloudKit 有大约 2000 条我正在尝试下载的记录。我无法将它们全部下载,我查看了CloudKit CKQueryOperation 没有获取所有记录以获得超过 100 个结果。现在我最多可以下载 999,但如果我将结果限制设置为 1000 或更多,它将在 80-500 之间随机失败。我是否需要将这些条目拆分为不同的记录类型?

0 投票
1 回答
105 浏览

swift - 当用户输入日期/时间字段时,我可以对 CKRecord 进行排序吗?

我在 CloudKit 的不同记录中保存多个字段。当我查询记录时,我目前将它们按创建日期排序。我是否能够按我让用户保存到记录的日期/时间字段而不是按记录的创建或修改日期对这些记录进行排序?