updateUserActivityState
上的文档对我来说有点模糊。
子类覆盖此方法以更新给定用户活动的状态。您应该使用其adduserInfoentries(来自:)方法。
当状态肮脏时,您应该将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()
}
但是,当我们只设置一次活动而从不更新一次时,我们应该应该 也总是必须实现UpdateUseractivityState?
如果nsuseractivity对象永远不会更改,并且在创建时已完全配置,则无需覆盖uiresponder.updateuseractivitystate方法。
但是,为了保持一致性和对未来的影响(如果您确实使该用户活动对象变得可变(,则该应用程序可能仍希望使用UpdateUserActivityState在通知响应者链时填写该活动。