gpt4 book ai didi

ios - 无法使用 CloudKit 的 CKQueryOperation 从 iCloud 获取数据

转载 作者:行者123 更新时间:2023-11-28 08:56:07 25 4
gpt4 key购买 nike

我实现了 CloudKit 抓取功能。但是我这里有一些问题。当我使用下面的代码时

    let cloudContainer = CKContainer.defaultContainer()
let publicDatabase = cloudContainer.publicCloudDatabase
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Restaurant", predicate: predicate)

publicDatabase.performQuery(query, inZoneWithID: nil, completionHandler: {
results, error in
if error == nil {
print("Completed the download of Restauran data")
self.restaurants = results! as [CKRecord]
dispatch_async(dispatch_get_main_queue(), {
self.tableView.reloadData()
})
} else {
print(error)
}
})

我可以成功获取数据。但是,一旦我更改了代码,如

    restaurants = []
let cloudContainer = CKContainer.defaultContainer()
let publicDatabase = cloudContainer.publicCloudDatabase

let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Restaurant", predicate: predicate)

let queryOperation = CKQueryOperation(query: query)
queryOperation.desiredKeys = ["name", "image"]
queryOperation.queuePriority = .VeryHigh
queryOperation.resultsLimit = 50

queryOperation.recordFetchedBlock = { (record:CKRecord!) -> Void in
if let restaurantRecord = record {
self.restaurants.append(restaurantRecord)
}
}

queryOperation.queryCompletionBlock = { [unowned self] (cursor, error) in
if (error != nil) {
print("Failed to get data from iCloud - \(error!.localizedDescription)")
} else {
print("Successfully retrieve the data form iCloud")
dispatch_async(dispatch_get_main_queue(), {
self.tableView.reloadData()
})
}
}

publicDatabase.addOperation(queryOperation)

使用 CKQueryOperation,我将无法获取数据。请问是哪里出了问题。

10.8 更新

我一直在尝试很多方法来解决这个问题。我发现应用程序甚至没有输入 recordFetchedBlockqueryCompletionBlock。我不知道为什么会这样。

最佳答案

最后,今天我修复了您请求的代码的错误。它现在正在工作...请问我是否需要进一步的帮助。谢谢。

restaurants = []
let cloudContainer = CKContainer.defaultContainer()
let publicDatabase = cloudContainer.publicCloudDatabase

let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Restaurant", predicate: predicate)

let queryOperation = CKQueryOperation(query: query)
queryOperation.desiredKeys = ["name", "image"]
queryOperation.queuePriority = .VeryHigh
queryOperation.resultsLimit = 50

queryOperation.recordFetchedBlock = { (record:CKRecord!) -> Void in

self.restaurants.append(record)
}

queryOperation.queryCompletionBlock = { (cursor: CKQueryCursor?, error: NSError?) in
dispatch_async(dispatch_get_main_queue()) {
if (error != nil) {
print("Failed to get data from iCloud - \(error!.localizedDescription)")
} else {
print("Successfully retrieve the data form iCloud")
self.tableView.reloadData()

}
}
}

关于ios - 无法使用 CloudKit 的 CKQueryOperation 从 iCloud 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com