Я пытаюсь создать массив PFObjects, называемый «areaList». Я немного разбираюсь в этом и понимаю, что я мог бы воспользоваться обработчиком завершения для обработки асинхронного характера загруженных результатов. Мой вопрос, в частности, заключается в том, чтобы получить некоторые рекомендации о том, что я делаю неправильно, а также о потенциальных советах о том, как добиться результата «лучше».Обработчик завершения - Parse + Swift
Вот моя функция запроса с обработчиком завершения:
func loadAreasNew(completion: (result: Bool) ->()) -> [Area] {
var areaList = self.areaList
let areaQuery = PFQuery(className: "Area")
areaQuery.findObjectsInBackgroundWithBlock {
(areas: [PFObject]?, error: NSError?) -> Void in
if error == nil {
for area in areas! {
let areaToAdd = area as! Area
areaList.append(areaToAdd)
// print(areaList) // this prints the list each time
// print(areaToAdd) // this prints the converted Area in the iteration
// print(area) // this prints the PFObject in the iteration
if areaList.count == areas!.count {
completion(result: true)
} else {
completion(result: false)
}
}
} else {
print("There was an error")
}
}
return areaList
}
Вот как я пытаюсь вызвать его в viewDidLoad:
loadAreasNew { (result) ->() in
if (result == true) {
print(self.areaList)
} else {
print("Didn't Work")
}
}
я присвоил эту переменную перед viewDidLoad:
var areaList = [Area]()
В консоли я получаю следующее:
Didn't Work
Didn't Work
Didn't Work
Didn't Work
[]
Представляя 5 пунктов, которые я знаю, есть в Parse ...
Я чувствовал, как это было несколько ног, но после некоторой корректировки синтаксиса, я действительно не работает для меня почему-то. Я заменил часть «codeINeed» простой «печатью», чтобы проверить ее, и это даже не сработало. Опять же, я приеду утром утром. Спасибо за ответ! –
В конечном счете, я выбрал этот ответ, выполнив несколько вещей. Во-первых, я закончил использование ParseUI, у которого есть свой собственный подкласс для обработки возвращаемых массивов PFObjects и представления этого в виде таблицы. Что касается вашей логики, вы были мертвы - у PFQuery есть свой собственный обработчик завершения, также я закончил работу с «CodeINeed» в функции, как вы предложили. Благодаря! –