【发布时间】:2021-05-11 16:21:05
【问题描述】:
我正在构建一个小部件,它显示从 API 获得的简单预订列表。我已经从 getTimeline 方法设置了 API 调用,如大量教程中所示,但是没有一个涵盖调用出现问题时该怎么做。
func getTimeline(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
NetworkManager().getTimelineEntries { result in
switch result {
case .success(let entries):
let timeline = Timeline(entries: entries, policy: .atEnd)
completion(timeline)
case .failure(let error):
print(error.localizedDescription)
}
}
我们正在使用存储在钥匙串中的登录凭据,如果用户未登录(凭据为空),我想显示一个静态视图。如果用户已登录但请求失败或返回零条目,我还想显示一个静态视图。
由于 API 调用当前是在 getTimeline 方法中执行的,我不确定处理这些情况的最佳方法。我可以返回一个配置为显示自定义消息的时间线条目,但这似乎不是最好的方法,必须有更好的方法来处理这个问题。对于未登录的用户,当我们知道它会失败时尝试 API 调用似乎是错误的,那么有没有办法在时间线提供程序之外处理这个问题?
【问题讨论】: