我有一个UISearchResultsController,它在输入时在本地搜索,在按下搜索按钮时远程搜索(CloudKit)。返回结果的数量需要10-30 (我目前正在用25测试我的应用程序,它总是足够的)
搜索结果列表使用RecordType1填充,而详细信息由RecordType1和RecordType2填充。我的问题是如何在最小化请求/秒的同时获取第二种引用类型。我查看了苹果的CloudCaptions示例,当每个RecordType1都被获取时,他们通过获取第二个记录类型来解决这个问题。这似乎不必要地创建了获取请求(1RecordType1 + 25RecordType2 = 26请求)。我怎样才能减少这种情况?看起来应该可以在两个请求中实现(一个用于RecordType1,另一个用于获取与其关联的所有RecordType2 )。
更新:RecordType2有一个对RecordType1的反向引用
发布于 2017-01-28 20:26:52
除非我误解了您的问题,否则我认为您可以对您的CloudKit数据库执行一个查询:
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比较搜索多个键:
let searchKeys = ... // [value1, value2, value3, etc.]
let predicate = NSPredicate(format: "recordType1 IN %@", searchKeys)参考文献
https://stackoverflow.com/questions/41904807
复制相似问题