我正在尝试解析使用Haneke Swift缓存的一些数据。我已经缓存了数据并编写了解析器来完成这项工作。这个解析器在一个单独的类中,称为AssembleCalendar()
.
使用 Haneke 的示例代码进行获取,我已经尝试完全和完全失败从闭包中实际返回一个值。
我的尝试
func getScheduledItems() -> [ScheduledItem] {
var scheduledItem = [ScheduledItem]() // initialize array
let cache = Shared.dataCache
cache.fetch(key: "CalendarData").onSuccess { data in
scheduledItem = AssembleCalendar().assimilate(data) // update array
print(scheduledItem) // array returns expected value
}
print(scheduledItem) // array returns nil
return scheduledItem // returns nil
}
我知道的
我知道这是一个异步问题。我的代码没有等待我的AssembleCalendar()
解析器完成。它只是运行每一行并在我的 scheduleItem 收到值之前返回 nil 。我试过了了很多很多解决方案并在线阅读了很多示例,但我无法弄清楚在这种情况下如何从这个闭包中检索一个值。
我的问题
如何在我的函数达到 nil 之前让 .fetch() 返回一个值?
更新:
这是我在上下文中的代码:
class Schedule {
var items : [ScheduledItem]
init() {
items = getScheduledItems() // Schedule.getScheduledItems()
}
func getScheduledItems(completion: (items: [ScheduledItem]) -> ()) {
var scheduledItem = [ScheduledItem]() // initialize array
let cache = Shared.dataCache
cache.fetch(key: "CalendarData").onSuccess { data in
scheduledItem = AssembleCalendar().assimilate(data) // update array
print(scheduledItem) // array returns expected value
completion(items: scheduledItem)
}
}
}