2015-09-10 14 views
11

Zajmuję się tworzeniem aplikacji z xcode 7 beta 5. Kiedy uruchamiam moją aplikację na moim iPhone 6 i próbuję połączyć ją z CloudKit, jeśli mój iPhone działa w trybie wifi wszystko w porządku, wyświetlam wszystkie moje dane; ale jeśli mój iPhone działa w trybie LTE, nie widzę żadnych danych. Czy ktoś wie, jak to zrobić?iOS 9 CloudKit: zapytanie nic nie zwraca podczas połączenia z siecią komórkową

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) 

} 

Dzięki, Alessio

Odpowiedz

13

Otwórz aplikację Ustawienia, znajdź aplikację, włączyć „Użyj danych mobilnych”

Aktualizacja: Jak omówiono poniżej dodanie następującej linii kodu rozwiązało problem :

queryOperation.qualityOfService = .UserInteractive 

Powodem, dla którego to działa, musi być problem z czasem/obciążeniem. Moje pierwsze przypuszczenie byłoby, że jest to spowodowane tym wierszu:

queryOperation.queuePriority = .VeryHigh 

Dokumentacje wskazuje na to .queuePriority: Należy użyć wartości priorytetowych tylko w razie potrzeby klasyfikowania względny priorytet działalności non-zależnych.

Dokumentacja dla urządzenia .qualityOfService to: Domyślną wartością tej właściwości jest NSOperationQualityOfServiceBackground i należy tę wartość pozostawić na miejscu, gdy tylko jest to możliwe.

Proszę więc spróbować usunąć oba .queuePriority i .qualityOfService i sprawdzić, czy działa.

Aktualizacja 2: Podobno jest to błąd CloudKit. Więcej osób ma ten sam problem. Zanotuj go pod numerem https://bugreport.apple.com

+0

"Użyj danych mobilnych" w ustawieniach aplikacja była już włączona ... –

+1

Dziwne, nie mogę myśleć z innego powodu. Oczywiście technicznie jesteś w innej sieci. To nie jest problem z kodem, jest to problem z siecią. W takim przypadku powinien pojawić się błąd. Czy wydrukowano błąd? –

+0

Też myślę, że to dziwne ... W tej samej aplikacji mam czytnik rss i działa idealnie z wifi i LTE ... Nie mam żadnego rodzaju drukowanego błędu –

Powiązane problemy