Tag: ckquery

如何查询CloudKit的recordID IN

我的谓词想要排除一些已经下载并且在[CKRecordID]中可用的logging。 现在我可以查询1 CKRecordID [0],但不是[CKRecordID]数组。 我如何查询数组? let excludeIDs: [CKRecordID] 这工作: let pred1 = NSPredicate(format: "NOT(recordID = %@)", excludeIDs[0]) 但是这不是: let pred1 = NSPredicate(format: "NOT(recordID IN %@)", excludeIDs) 错误:loadImageCompareRecordIDsAndEndDateThatHaveNotEnded错误:无效的谓词:无效的谓词:数组成员必须符合CKRecordValue:(“”,“”,“”,“”,“”)(CKRecordID) 代码的其他一般部分: let sort = NSSortDescriptor(key: "creationDate", ascending: false) let query = CKQuery(recordType: MyRecordTypes.ImageCompare, predicate: pred1) query.sortDescriptors = [sort] let operation = CKQueryOperation(query: query) operation.desiredKeys = ["endDate"] operation.resultsLimit = […]

CloudKit复合查询(带有OR的查询)

我想用两个字段的OR来​​查询CloudKit。 但我找不到如何做到这一点。 我做的是: NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"(creatorUserRecordID == %@)", userId]; NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"(toUser == %@)", userId]; NSCompoundPredicate *compPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[predicate1, predicate2]]; CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Message" predicate:compPredicate]; 但不幸的是,CKQuery不支持OR查询(如文档中所写)我可以通过其他方式实现这种效果吗?

私有区域的CKQuery只返回来自CloudKit的前100条CKRecords

对Cloudkit私有默认区域的查询结果是否有限制? 我不知道为什么我只收到前100个logging与以下查询: let p = NSPredicate(format: "(type == 'entered') AND (timestamp >= %@) AND (timestamp <= %@)", from, to) let q = CKQuery(recordType: self.beaconRecordType, predicate: p) q.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: true)] self.privateDatabase?.performQuery(q, inZoneWithID: nil, completionHandler: { results, error in //count = 100 println(results.count) } 好的。 正如Edwin在答案中提到的,解决scheme是使用CKQueryOperation获取数据的初始块,然后使用completionBlock中的“游标”来触发另一个操作。 这里是一个例子: UPDATE func fetchBeacons(from:NSDate, to:NSDate) { let p […]