在watchOS 7中在后台URLSession中下载数据

问题描述

我正在尝试遵循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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...