问题标签 [ckreference]

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 回答
429 浏览

ios - 如何在 Swift 中使用 CKReference

似乎我到处都在搜索这个话题的一个体面的解释。Apple 文档非常适合理论,但在连接代码时缺乏足够的文档。我正在寻找构建如此流行的用户到帖子模式,但我很难掌握到底是做什么CKReference的。解释发生的事情(如果可能的话,在幕后)以及如何在 Swift 中实现它会很棒。任何指导将不胜感激。

我目前考虑的方式是在制作用户记录的地方引用 Post 记录。但是,这没有任何意义,因为在制作用户记录的地方(通常是注册页面)没有帖子,无法引用帖子记录。而且由于模式是动态创建的,即使您要查询数据库,理论上也没有任何方法可以访问 Post 记录。

使用 Swift 3 和 Xcode 8。

0 投票
1 回答
731 浏览

cloudkit - 在 CloudKit 中创建指向多个 CKRecord 的引用列表

斯威夫特 3.1,Xcode 8.3.3

我在 CloudKit 中有一个名为的记录类型,Aircraft它有一个名为fieldValuestype的字段Reference List

在我的代码中,我有一个aircraftCKRecord 和几个fieldValueCKRecords,它们是飞机的孩子。

如何将所有这些fieldValue记录放入aircraft's 参考列表中?

创建一个CKReference似乎只允许其中有一条记录:

但我试图将许多fieldValues 连接到一个aircraft. 有任何想法吗?

0 投票
1 回答
502 浏览

cloudkit - 如何在 CloudKit 中存储对共享记录的引用

我想将用户偏好存储在附加到用户公共用户记录的 CloudKit 中。首选项可以是私人记录或共享记录(由其他用户共享)。

我可以使用 CKReference 来存储对共享记录的引用吗?如果可以,我如何确定存储的 CKReference 是引用私有数据库还是公共数据库?

目前,如果我将 CKReference 存储到私有记录,那么我可以查询私有数据库以检索记录,但是如果我将 CKReference 存储到共享记录,那么我如何确定要查询哪个数据库。

我可以使用 CKReference 跨数据库链接,还是必须使用记录名称之类的东西来搜索它并存储一个单独的引用来指示它是私有记录还是共享记录?

编辑:

好的,阅读文档是值得的,但我花了一段时间才找到我需要的解释,这是文档的摘录

当您不能使用 CKReference 对象来引用记录时,您也可以使用记录 ID。引用仅在数据库的单个区域内有效。要引用当前区域或数据库之外的对象,请将字符串保存在记录的 CKRecordID 和 CKRecordZoneID 对象中。当您想稍后检索记录时,请使用这些字符串重新创建记录和区域 ID 对象,以便您可以获取记录。

https://developer.apple.com/documentation/cloudkit/ckrecordid

0 投票
0 回答
183 浏览

ios - 将 CKReference 与 CKShare 一起使用

我正在尝试使用 CKShare 共享父 CKRecord。父 CKRecord 的其他子记录具有链接到父 CKRecord 的 CKReferences。一切都很好,接收者可以获取父记录,但我似乎无法使用 CKQuery/CKQueryOperation 访问子记录。

当所有者获取父记录时(不使用 CKShare 链接),他能够使用与上述相同的方法获取子记录。我真的很想得到一些帮助。提前致谢。

0 投票
1 回答
280 浏览

ios - 使用 CKShare 订阅

我是订阅和 Cloudkit 的新手,我正在尝试设置订阅,以便在创建、编辑、删除 CKShare 记录以及参与者离开私有和共享数据库的共享时发送推送通知。

在我的应用程序中,我在 Cloudkit 中有两种记录类型。第一个是Deck,第二个是CardDeck与 有one-to-many关系Card。每个人都Card持有CKReference一个Deck。我注意到 Cloudkit 仪表板中有第三种记录类型,名为cloudkit.share. 根据我的研究,我相信我在这里需要四个订阅。当用户使用. _ Deck_ Card_ 我是否还需要在每个数据库上为记录类型创建另一个订阅,总共六个订阅?CKQuerySubscriptionDeckCardCKDatabaseSubscriptioncloudkit.share

谢谢

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 投票
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 投票
0 回答
119 浏览

cloudkit - 如何通过云工具包中的 CKreference 获取链接的多个记录类型

我创建了一系列 CK 引用,其中一个联系人具有多个位置,每个位置都有一个提供者,每个提供者都有一个仪表等等 let self.currentLocationCkRecord["ownningContact"] = CKReference(record: self.currentContactCkRecord!, action: CKReferenceAction .deleteSelf)

在每个联系人 CKRecord 的上述代码中,我正在获取位置 CKRecords,然后从我上面的 // TO DO 注释语句中可以看到:我需要为每个引用的记录调用整个执行 CKQuery 和 QueryCompletionBlock:提供程序和仪表

我的问题是,当我拉出位置 CKRecord 时,它会拉出所有引用的 Provider CKRecord 和 Meter CKRecord;如果是这样,如何检索它们中的每一个,或者我是否必须单独获取每个 Provider 和 Meters CKRecords,如果是这样,则 recordFetchedBlock 方法中的代码变得非常复杂,因为这是我必须调用嵌套代码的地方。

谁能建议如何以简单易操作的方式构造此代码?

0 投票
1 回答
39 浏览

icloud - 无法在 for 循环中从公共数据库中获取多个 CKReference 记录

我有一个联系人 CKRecord,有很多位置 CKRecord(一对多关系) 联系人 CKRecord 和位置 CKRecord 都是在公共数据库中创建的。我通过位置上名为 owningContact 的字段将 CKReference 来自联系人添加到 locaiotn。

我去 cloudKit 仪表板并验证两个记录都存在。位置 CKRecord 具有字段 owningContact,该字段具有联系人 CKRecord 的记录名称。我定义了一个函数来获取这样的位置:

然后我调用代码以根据联系人 CKRecord 获取位置 CKRecord,如下所示:

我有两个联系人,第一个联系人已被 CKReferenc'ed 到该位置,而第二个联系人尚未 CKReferenc'ed 到该位置。我认为这是问题所在:循环中的第一次联系 CKRecord 信息是通过调用 iCloudFetchLocations 发送的,该信息立即返回而无需等待云响应,for 循环发送第二个联系并再次调用 iCloudFetchLocations。由于第二个联系人没有对该位置的 CKReference,因此呼叫失败,我永远无法到达第一个联系人的位置,因为它还没有返回。

如何解决这个问题?

0 投票
1 回答
288 浏览

swift - 从 CloudKit 中的 CKRecord.Reference 获取价值

我有 2 个记录类型:“userDetails”和“request”,其中“request”中的一个字段引用“userDetails”。我想知道我是否从“请求”中获取记录以获取参考字段,然后从参考中获取仅在“userDetails”中可用的其余值,例如用户名,这可能吗?或者有什么方法可以在不进行其他数据获取的情况下实现这一目标?

我试过这个:

但出现错误:

由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[<CKReference 0x600002034280> valueForUndefinedKey:]:此类与键 userName 的键值编码不兼容。”

感谢任何帮助和建议。