CloudKit:获取列表属性中具有特定元素的记录

Posted

技术标签:

【中文标题】CloudKit:获取列表属性中具有特定元素的记录【英文标题】:CloudKit: fetching records that have a certain element in a list attribute 【发布时间】:2017-02-28 03:51:43 【问题描述】:

我想知道是否可以在 CloudKit 中形成一个 NSPredicate 来执行以下操作:

假设我有一些记录类型 A。假设 A 有一些属性 b,其类型为 [CKReference]。让 cCKReference 类型的某个元素,它可能在 b 中。

我希望查询列表 b 中有 c 的所有 A 类型的记录。 NSPredicate可以做到这一点吗?

提前致谢!

编辑

我基本上想这样做 (CloudKit - NSPredicate for finding all records that contain specified CKReference in a reference list),但在 Swift 3 中。我在网上找不到好的资源来解释如何在 NSPredicate 中使用 contains

【问题讨论】:

【参考方案1】:

就我在问题中使用的变量而言,这最终对我有用:

letc= CKReference(recordID: userRecordID!, action: .none)

let joinedPredicate = NSPredicate(format: "%K CONTAINS %@",b,c)

let joinedQuery = CKQuery(recordType:A, predicate: joinedPredicate)

【讨论】:

【参考方案2】:
var predicates = [NSPredicate]()
predicates.append(NSPredicate(format: "("your key" CONTAINS[cd]%@)", filterString))

and initialising CKrefrence in swift 

let reference = CKReference(recordID: example.recordID, action: .deleteSelf)

您可以使用-- let reference = CKReference(recordID: example.recordID, action: .deleteSelf) 创建 CKReference 对象,其中 example.recordId 将是 CloudKit 中的记录 ID,创建后您需要使用谓词进行过滤其中 predicates.append(NSPredicate(format: "("your key" CONTAINS[cd]%@)", filterString)) 过滤字符串将包含您创建的 CKReference 对象的引用 -

【讨论】:

请解释您的解决方案,而不仅仅是粘贴代码。 您可以使用-- let reference = CKReference(recordID: example.recordID, action: .deleteSelf) 创建 CKReference 对象,其中 example.recordId 将是 CloudKit 中的记录 ID,创建后您需要让您的过滤器使用谓词 where predicates.append(NSPredicate(format: "("your key" CONTAINS[cd]%@)", filterString)) 过滤器字符串将包含您创建的 CKReference 对象的引用 我的意思是添加到您的答案中。这已被标记为低质量帖子。 感谢您的回复! CONTAINS[cd]中的cd是什么意思? 这是在 NSPredicate 中过滤的关键 contains 将检查它是否包含在该数组或列表中 NSPredicate 可以通过在比较运算符(例如以 [c] 开始)。您可以使用 [d] 修饰符使比较变音符号不敏感,或者使用 [cd] 修饰符使比较变音符号不敏感。

以上是关于CloudKit:获取列表属性中具有特定元素的记录的主要内容,如果未能解决你的问题,请参考以下文章

如何从对象数组中获取具有属性的列表,除非它包含具有特定值的另一个项目?

将资产列表(数组)保存到特定的 CKRecord

我如何通过其记录名称查询 CloudKit 以获取特定记录?

仅获取 cloudkit 中的特定字段?

查找是不是在列表中找到具有特定属性值的元素

CloudKit - NSPredicate 用于在引用列表中查找包含多个 CKReference 的所有记录