我有一个类Download
作为CKQueryOperation
. 其中一个 inits 允许我使用一组值构建我的谓词:
init(type: String, queryField: String, queryValues: [CKRecordValue], to rec: RecievesRecordable, from database: CKDatabase? = nil) {
let predicate = NSPredicate(format: "\(queryField) = %@", argumentArray: queryValues)
query = CKQuery(recordType: type, predicate: predicate)
reciever = rec
db = database
super.init()
}
当我测试它时,query
只匹配数组中的第一个值。因此,如果queryValues = [testValue0, testValue1]
我有一个字段匹配的记录,testValue0
并且我有第二个匹配的记录testValue1
,则只会发现第一条记录。如果我切换订单,则另一条记录会被识别。
我可以使用数组创建谓词但只有第一个值匹配,这似乎很奇怪。文档说值是按照它们出现的顺序替换的,但它不应该继续移动到第二个值吗?
对于更多上下文,每条记录都存储在一个单独的数据库中(私有与公共),如果param 为 nil ,我的Download
班级会启动两个独立CKQueryOperations
的两个都依赖的数据库。无论哪个操作失败,最终都找不到与第一个值匹配的结果,然后在检查第二个值之前放弃。query
database
如果需要,我可以包含“下载”的完整代码和失败的单元测试。