NSUserActivity для недавно запрошенной сцены не имеет информации о пользователе

В моем приложении у меня есть табличное представление, где каждая ячейка представляет URL-адрес файла. Пользователь может коснуться ячейки и новогоUIScene откроется представление этого файла...

// In some view controller
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let url: URL = dataSource.itemIdentifier(for: indexPath)!

    let userActivity = NSUserActivity(activityType: ViewController.activityType)

    userActivity.addUserInfoEntries(from: [
        ViewController.ActivityKey.url : url
    ])

    UIApplication.shared.requestSceneSessionActivation(nil,
                                                       userActivity: userActivity,
                                                       options: nil)

    tableView.deselectRow(at: indexPath, animated: true)
}

Как видно из приведенного выше фрагмента, я сохраняю URL-адрес в NSUserActivity который передается в UIScene.

Моя проблема в том, что userInfo всегда пусто в новой сцене.

// In SceneDelegate.swift

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    let navController = window!.rootViewController as! UINavigationController
    viewController = navController.viewControllers.last as? ViewController

    let userActivity =
        connectionOptions.userActivities.first ??
            session.stateRestorationActivity

    if let someActivity = userActivity {
        // ✳️ BREAKPOINT HERE ✳️
        viewController.restoreUserActivityState(someActivity)
    }

    viewController.setupThenOpenDocument()
}

Команды отладчика...

(lldb) p someActivity.userInfo
([AnyHashable : Any]?) $R2 = 0 key/value pairs

Я поэкспериментировал, установив заголовок активности пользователя (я нигде в своем приложении не использую заголовки действий). Название действительно попадает в новую сцену, подтверждая, что активность пользователя, на которую я смотрю, является правильной.

0 ответов

Другие вопросы по тегам