Ios 正在尝试背景刷新
我正在尝试使用AppDelegate中的以下代码在我的应用程序的后台执行代码:Ios 正在尝试背景刷新,ios,swift,Ios,Swift,我正在尝试使用AppDelegate中的以下代码在我的应用程序的后台执行代码: func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)
return true
}
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
if let viewController = window?.rootViewController as? MainViewController {
print("done")
viewController.updateUI(weather: "cloudy", temp: 67.0)
}
}
但是,if-let语句中的代码不会运行,也不会打印任何内容。我已经启用了后台提取,并通过后台方案触发刷新
如何让if-let语句中的代码运行?在许多情况下,从后台启动时,UI还不存在。您不应该试图在后台与视图控制器通信;它们不在屏幕上。您的模型对象应该处理数据。您的视图控制器应该只显示它。在许多情况下,从后台启动时,您的UI还不存在。您不应该试图在后台与视图控制器通信;它们不在屏幕上。您的模型对象应该处理数据。您的视图控制器应该只显示它。您是否尝试在if之后添加“else”?还请注意,您必须调用
completionHandler
您是否尝试在if之后添加“else”?还请注意,您必须调用completionHandler
我不认为这是在屏幕上调用函数的错误,但是“if let”中的所有代码都不能运行。@rohan我同意。但潜在的问题是UI还没有出现,因为应用程序在后台。if-let没有运行,因为视图控制器不在屏幕上。我不认为在不在屏幕上时调用函数是错误的,而是“if-let”中的所有代码都没有运行。@rohan我同意。但潜在的问题是UI还没有出现,因为应用程序在后台。if let不运行,因为视图控制器不在屏幕上。