2015-09-10 28 views
11

我正在開發一款xcode 7 beta 5應用程序。當我在我的iphone 6上運行我的應用程序並嘗試將它連接到CloudKit時,如果我的iphone工作正常在wifi模式下,一切正常,我顯示我的所有數據;但如果我的iPhone在LTE模式下工作,我看不到任何類型的數據。有誰知道如何做到這一點?iOS 9 CloudKit:連接到蜂窩網絡時,查詢不會返回任何內容

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) 

} 

感謝,阿萊西奧

回答

13

打開設置應用,找到您的應用,使「使用移動數據」

更新:如下 討論添加以下代碼行的問題解決了:

queryOperation.qualityOfService = .UserInteractive 

這項工作的原因必須是時間/負載問題。我最初的猜測是,這是由這一行造成的:

queryOperation.queuePriority = .VeryHigh 

的單證爲.queuePriority此規定: 您應該使用優先級值僅作爲非相關的操作的相對優先級分類的需要。

.qualityOfService的文檔狀態爲: 此屬性的默認值爲NSOperationQualityOfServiceBackground,您應該儘可能將該值保留原位。

所以請嘗試刪除.queuePriority.qualityOfService,看看它是否工作。

更新2:顯然這是一個CloudKit錯誤。更多的人有同樣的問題。請舉報https://bugreport.apple.com

+0

設置應用中的「使用移動數據」已啓用... –

+1

奇怪的是,無法想到除此之外的任何其他原因。當然,從技術上講,你在不同的網絡上。這不是一個代碼問題,這是一個網絡問題。在這種情況下,你應該得到一個錯誤。是否有打印錯誤? –

+0

我也覺得這很奇怪...在同一個應用程序中,我有一個rss閱讀器,它可以完美地與wifi和LTE ...我沒有任何一種錯誤打印 –

相關問題