2015-08-26 1 views
1

Мое завершениеHandler пропускается в моем выполненииQuery.performQuery skips CompletionHandler

let container = CKContainer.defaultContainer() 
var publicDB: CKDatabase! 

    publicDB = container.publicCloudDatabase 
    let query = CKQuery(recordType: "Centers", predicate: NSPredicate(value: true)) 
    publicDB.performQuery(query, inZoneWithID: nil, completionHandler: { results, error in 
     if error != nil 
     { 
      dispatch_async(dispatch_get_main_queue()) 
      { 
       println("error loading: \(error)") 
      } 
     } 
     else 
     { 
      self.centerResults = results 
     } 
    }) 

    var center = Center() 
    for item in centerResults 

Когда я добираюсь до этого нижнего выражения «для», centerResults равен нулю. Я намерен прочитать все записи в моей публичной схеме «Центры».

В моей приборной панели у меня есть схема «Центров» с 4 общедоступными записями.

Что может быть неправильным?

ответ

1

ВыполнениеQuery - это асинхронный вызов. поэтому вы, вероятно, достигнете цикла for до того, как будет вызван executeHandler. Попытайтесь переместить код в нижней части внутристрочного Handler. И установите отладку в первой строке в файле завершенияHandler, чтобы узнать, что происходит.