【发布时间】:2018-09-27 20:27:16
【问题描述】:
我想详细了解在完成处理程序中处理数据时的正确执行顺序。我的 Event 类有以下函数定义:
@nonobjc public class func fetchEvents(completion: @escaping ([Event]) -> () = { _ in }) -> [Event] {
let fetch = self.fetchEventRequest()
var entities: [Event] = []
context.perform {
entities = try! fetch.execute()
completion(entities)
}
return entities
}
我从我的视图控制器中调用上述函数:
events = MyEvents.fetchEvents() { entities in
if (entities.count == 0) {
self.events = Event.getEventsFromAPI()
}
print(events.count) - // returns 0 at this point
self.eventsTableView.reloadData()
}
在调用 self.eventsTableView.reloadData() 时,我的 events 变量仍然为空。我假设由于完成处理程序在函数内的代码成功执行后执行,events var 已经被分配了返回值,不是吗?
【问题讨论】:
标签: ios swift completionhandler