iOS 9 CloudKit:连接到蜂窝网络时,查询不返回任何内容
我正在用xcode 7 beta 5开发一个应用程序。当我在iphone 6上运行我的应用程序并尝试将其连接到CloudKit时,如果我的iphone在wifi模式下工作,一切正常,我会显示所有数据;但是如果我的iphone在LTE模式下工作,我看不到任何类型的数据。有人知道怎么做吗iOS 9 CloudKit:连接到蜂窝网络时,查询不返回任何内容,ios,iphone,swift,icloud,cloudkit,Ios,Iphone,Swift,Icloud,Cloudkit,我正在用xcode 7 beta 5开发一个应用程序。当我在iphone 6上运行我的应用程序并尝试将其连接到CloudKit时,如果我的iphone在wifi模式下工作,一切正常,我会显示所有数据;但是如果我的iphone在LTE模式下工作,我看不到任何类型的数据。有人知道怎么做吗 func getRecordsFromCloud() { lavori = [] / let _cloudContainer = CKContainer.defau
func getRecordsFromCloud() {
lavori = []
/
let _cloudContainer = CKContainer.defaultContainer()
let publicDatabase = CKContainer.defaultContainer().publicCloudDatabase
/
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Lavori", predicate: predicate)
/
let queryOperation = CKQueryOperation(query: query)
queryOperation.desiredKeys = ["image","name"]
queryOperation.queuePriority = .VeryHigh
queryOperation.resultsLimit = 50
queryOperation.recordFetchedBlock = { (record:CKRecord) -> Void in
let lavoriRecord = record
self.lavori.append(lavoriRecord)
}
queryOperation.queryCompletionBlock = { (cursor:CKQueryCursor?, error:NSError?) -> Void in
if (error != nil) {
print("Failed to get data from iCloud - \(error!.localizedDescription)")
}
else {
print("Successfully retrieve the data from iCloud")
dispatch_async(dispatch_get_main_queue(), {
self.tableView.reloadData()
})
}
}
/
publicDatabase.addOperation(queryOperation)
}
谢谢,Alessio打开设置应用程序,找到你的应用程序,启用“使用移动数据” 更新:如下所述 添加以下代码行解决了问题:
queryOperation.qualityOfService = .UserInteractive
这项工作的原因一定是时间/负载问题。我的初步猜测是,这是由以下几行引起的:
queryOperation.queuePriority = .VeryHigh
.queuePriority
的文档说明如下:
仅当需要对非相关操作的相对优先级进行分类时,才应使用优先级值
文档中说明了.qualityOfService
的以下内容:
此属性的默认值为NSOperationQualityOfServiceBackground,应尽可能保留该值
因此,请尝试删除.queuePriority
和.qualityOfService
并查看它是否正常工作
更新2:显然这是一个CloudKit错误。更多的人有同样的问题。请在上报告。我最后通过打开iCloud驱动器数据设置解决了这个问题。这其实很难找到。我在ios 14.1上。我的设置路径是: 设置->移动数据-(然后在移动数据的右下方)->iCloud Drive 我打开了这个,然后一切都正常了
奇怪,我想不出还有其他原因。当然,从技术上讲,你是在一个不同的网络上。这不是代码问题,而是网络问题。在这种情况下,您应该得到一个错误。是否打印了错误?我也认为这很奇怪…在同一个应用程序中,我有一个rss阅读器,它与wifi和LTE完美配合。。。我没有打印任何类型的错误。请尝试设置queryOperation.qualityOfService=.UserInteractiveO,并尝试在recordFetchedBlock中设置一条打印语句,以查看是否有记录进入。也许你有其他的代码来清理self.lavori。这可能是一个与CloudKit团队成员对话的时间问题(3G慢,WiFi快)