iOS 9 CloudKit:连接到蜂窝网络时,查询不返回任何内容

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

我正在用xcode 7 beta 5开发一个应用程序。当我在iphone 6上运行我的应用程序并尝试将其连接到CloudKit时,如果我的iphone在wifi模式下工作,一切正常,我会显示所有数据;但是如果我的iphone在LTE模式下工作,我看不到任何类型的数据。有人知道怎么做吗

    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快)