При установке userActivity мы должны переопределить updateUserActivityState - PullRequest
0 голосов
/ 05 июля 2019

Документы на updateUserActivityState немного расплывчаты для меня.

https://developer.apple.com/documentation/uikit/uiresponder/1621095-updateuseractivitystate

Подклассы переопределяют этот метод для обновления состояния заданной активности пользователя.Вы должны добавить состояние, представляющее активность пользователя, в объект NSUserActivity, используя его метод addUserInfoEntries (from :).

Когда состояние грязное, следует установить для свойства needsSave NSUserActivity значение true, и этот метод будет вызываться в соответствующее время.

Поэтому этот метод вызывается, когдамы делаем:

open override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.userActivity?.needsSave = true
}

И затем мы можем соответствующим образом обновить действие:

override func updateUserActivityState(activity: NSUserActivity) {

  activity.addUserInfoEntriesFromDictionary(someInfo)
  super.updateUserActivityState(activity)
}

Но когда мы устанавливаем действие только один раз и никогда не обновляем его, мы должны всегда выполнятьupdateUserActivityState?

Например, при установке активности один раз в viewDidLoad:

override open func viewDidLoad() {
    super.viewDidLoad()

    let activity = NSUserActivity(activityType: "com.myApp")
    activity.title = "Viewing"
    activity.userInfo = ["myApp.item.key": ["Some", "Things"]]
    self.userActivity = activity
    self.userActivity?.becomeCurrent()
}
...