文档对updateUserActivityState
我来说有点模糊。
https://developer.apple.com/documentation/uikit/uiresponder/1621095-updateuseractivitystate
子类覆盖此方法以更新给定用户活动的状态。您应该使用其 addUserInfoEntries(from:) 方法将表示用户活动的状态添加到 NSUserActivity 对象中。
当状态为脏时,应将 NSUserActivity 的 needsSave 属性设置为 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()
}