2015-09-10 5 views
11

xcode 7ベータ版のアプリを開発しています。iphone 6でアプリを実行しているときにiPhone4がCloudKitに接続しようとしましたwifiモードではすべてOKです。私はすべてのデータを表示します。私の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で完璧に動作する...私は何らかの種類のエラーが印刷されていない –

関連する問題