问题描述
我正在尝试遵循WWDC20-10049的WWDC20会话“保持最新的并发症”。在尝试遵循代码时,我被卡在了schedule函数上:
func schedule(_ first: Bool) {
if backgroundTask == nil { //Issue is here
if let url = self.currentWeatherURLForLocation(delegate.currentLocationCoordinate)
{
let bgTask = backgroundURLSession.downloadTask(with: url)
bgTask.earliestBeginDate = Date().addingTimeInterval(first ? 60 : 15*60)
bgTask.countOfBytesClientExpectsToSend = 200
bgTask.countOfBytesClientExpectsToReceive = 1024
bgTask.resume()
backgroundTask = bgTask //Issue is here
}
}
}
}
由于会话仅提供摘要,因此我遇到的问题是定义var backgroundTask的地方。该函数在数据模型中声明,在这种情况下为WeatherDataProvider
。显然,它是backgroundURLSession.downloadTask
,但未标识为self
,因此它应该位于函数的本地,但未在代码段中显示。我希望它要么作为参数发送给函数,要么在数据模型本身中声明。如果在这里声明,则根据对话,它如何声明为,因为该片段正在签入以查看队列中是否有后台请求,所以它可以访问先前的后台请求,因此该函数不会调度另一个请求。我搜索了最近几天,但找不到任何可实现此目的的内容,我可以用来了解本次会议中来自Apple的位置。
我已经检查了本次answer和本次会议overview,但我还没有弄清楚。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)