首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用CloudKit为主细节供电

用CloudKit为主细节供电
EN

Stack Overflow用户
提问于 2017-01-27 23:45:13
回答 1查看 35关注 0票数 0

我有一个UISearchResultsController,它在输入时在本地搜索,在按下搜索按钮时远程搜索(CloudKit)。返回结果的数量需要10-30 (我目前正在用25测试我的应用程序,它总是足够的)

搜索结果列表使用RecordType1填充,而详细信息由RecordType1RecordType2填充。我的问题是如何在最小化请求/秒的同时获取第二种引用类型。我查看了苹果的CloudCaptions示例,当每个RecordType1都被获取时,他们通过获取第二个记录类型来解决这个问题。这似乎不必要地创建了获取请求(1RecordType1 + 25RecordType2 = 26请求)。我怎样才能减少这种情况?看起来应该可以在两个请求中实现(一个用于RecordType1,另一个用于获取与其关联的所有RecordType2 )。

更新RecordType2有一个对RecordType1的反向引用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-28 20:26:52

除非我误解了您的问题,否则我认为您可以对您的CloudKit数据库执行一个查询:

代码语言:javascript
复制
    let searchKey = ... // value for recordType1
    let z = CKRecordZone.default()
    let predicate = NSPredicate(format: "recordType1 == %@", searchKey)
    let query = CKQuery(recordType: "recordType2", predicate: predicate)
    db.perform(query, inZoneWith: z.zoneID) { (records, error) in
        if error != nil {
            // `records` contains recordType2
        } else {
            // check for errors
        }
    }

还可以使用谓词中的IN比较搜索多个键:

代码语言:javascript
复制
    let searchKeys = ... // [value1, value2, value3, etc.]
    let predicate = NSPredicate(format: "recordType1 IN %@", searchKeys)

参考文献

  1. 苹果( CloudKit CKQueryOperation )
  2. 苹果( CloudKit CKQuery )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41904807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档