【问题标题】:CloudKit: fetching records that have a certain element in a list attributeCloudKit:获取列表属性中具有特定元素的记录
【发布时间】: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

【问题讨论】:

    标签: ios swift nspredicate cloudkit


    【解决方案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] 修饰符使比较变音符号不敏感。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 2018-08-11
      相关资源
      最近更新 更多