Подтвердить что ты не робот

IOS 9 CloudKit: запрос ничего не возвращает при подключении к сотовой сети

Я разрабатываю приложение с бета-версией xcode 7 5. Когда я запускаю свое приложение на своем iphone 6, и я пытаюсь подключить его к CloudKit, если мой iphone работает в режиме Wi-Fi, все это нормально, я показываю все свои данные; но если мой 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)  

}  

Спасибо, Алессио

4b9b3361

Ответ 1

Откройте приложение настроек, найдите приложение, включите "использовать мобильные данные"

Обновление: Как обсуждается ниже Добавление следующей строки кода позволило решить проблему:

queryOperation.qualityOfService = .UserInteractive

Причина, по которой это работает, - это проблема времени/нагрузки. Мое первоначальное предположение состояло в том, что это вызвано этой строкой:

queryOperation.queuePriority = .VeryHigh

В документах указано .queuePriority следующее: Вы должны использовать значения приоритета только по мере необходимости, чтобы классифицировать относительный приоритет независящих операций.

В документации для .qualityOfService указано следующее: Значением по умолчанию этого свойства является NSOperationQualityOfServiceBackground, и вы должны оставить это значение на месте, когда это возможно.

Итак, попробуйте удалить как .queuePriority, так и .qualityOfService и посмотреть, работает ли он.

Обновление 2: По-видимому, это ошибка CloudKit. У большего числа людей такая же проблема. Сообщите об этом https://bugreport.apple.com