Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 正在尝试背景刷新_Ios_Swift - Fatal编程技术网

Ios 正在尝试背景刷新

Ios 正在尝试背景刷新,ios,swift,Ios,Swift,我正在尝试使用AppDelegate中的以下代码在我的应用程序的后台执行代码: func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch.

我正在尝试使用AppDelegate中的以下代码在我的应用程序的后台执行代码:

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不运行,因为视图控制器不在屏幕上。