Tag: ckrecord

CKFetchRecordsOperation + CKQueryOperations …我错过了什么?

在经过大量search示例代码之后,pipe理凑齐CKFetchRecordsOperation; 在这里,但是我一定错过了一些东西。 不要误解我的看法,但是… 要执行一个CKFetchRecordsOperation,你需要一个CKRecordID的NSArray; 为了得到一个CKRecordID的NSArray,你需要执行CKQuery,通过它你可以build立CKRecordID的NSArray。 但等一下,解压缩CKRecordIDs的过程使用一个CKQuery,通过它我可以简单地下载CKRecords呢? 如果没有CKQuery,你怎么得到CKRecordID的NSArray? -(void)doSingleBeaconsDownload { CKDatabase *publicDatabase = [[CKContainer containerWithIdentifier:@"iCloud.cqd.ch.BeaconBrowser"] publicCloudDatabase]; NSPredicate *predicatex = [NSPredicate predicateWithFormat:@"iBeaconConfig = %@",iBeaconsConfirmed.giReferenceID]; CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Running" predicate:predicatex]; [self.delegate performSelectorOnMainThread:@selector(processCompleted:) withObject:@"Downloading Configuration …" waitUntilDone:YES]; [publicDatabase performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) { if (error) { NSLog(@"Batch Download Error iCloud error %@",error); } else { […]

creatorUserRecordID.recordName包含“__defaultOwner__”,而不是显示在仪表板中的UUID

从CloudKit下载CKRecord ,并绘制创build者recordName ,我可以看到: (lldb) po record.creatorUserRecordID.recordName __defaultOwner__ 但仪表板显示出真正的价值。 为什么区别? 我希望我不必仅仅因为这个login的用户而下载?!

如何查询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 = […]

如何在创build新logging时使用CloudKit在没有延迟的情况下更新TableView中的数据

在我的应用程序中有2个视图控制器。 第一个“MainViewController”显示了从私有CloudKit数据库中获取的CKRecords字段的tableView。 在VC的viewWillAppear方法中,我从CloudKit获取logging并重新加载tableview的数据,以显示用户以前保存在CloudKit中的最新获取结果。 第二个视图控制器“CreateRecordViewController”用于创buildCKRecords并将其保存到CloudKit的专用数据库。 所以我在CreateRecordViewController中创buildlogging并在MainViewController中显示它们。 问题是:当我在CreateRecordViewController创buildlogging时,它保存在CloudKit服务器上,但closures此CreateRecordViewController并转到MainViewController后,tableview并不总是及时更新。 这是我CreateRecordViewController中保存logging的代码: CloudKitManager.sharedInstance.privateDatabase.save(myRecord) { (savedRecord, error) -> Void in if error == nil { print("successfully saved record code: \(savedRecord)") } else { // Insert error handling print("error Saving Data to iCloud: \(error.debugDescription)") } } logging保存后,我closuresCreateRecordViewController并查看MainViewController。 正如我之前在viewWillAppear of MainViewController中所说的,我检查iCloud是否可用,如果可用,我使用CloudKit中的查询获取所有logging,并在tableView中显示它们。 override func viewWillAppear(_ animated: Bool) { CKContainer.default().accountStatus { (accountStatus, error) in switch […]