Ios 设置userActivity时,是否必须覆盖updateUserActivityState

Ios 设置userActivity时,是否必须覆盖updateUserActivityState,ios,swift,cocoa-touch,uiresponder,nsuseractivity,Ios,Swift,Cocoa Touch,Uiresponder,Nsuseractivity,updateUserActivityState上的文档对我来说有点模糊 子类重写此方法以更新给定用户活动的状态。您应该使用其addUserInfoEntries(from:)方法将表示用户活动的状态添加到NSUserActivity对象中 当状态为dirty时,应将NSUserActivity的needsSave属性设置为true,并在适当的时间调用此方法 因此,在执行以下操作时调用此方法: open override func viewWillAppear(_ animated: Bool)

updateUserActivityState
上的文档对我来说有点模糊

子类重写此方法以更新给定用户活动的状态。您应该使用其addUserInfoEntries(from:)方法将表示用户活动的状态添加到NSUserActivity对象中

当状态为dirty时,应将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()
}
但是,当我们只设置一次活动而从不更新它时,我们应该这样做吗 还必须始终实现updateUserActivityState吗

如果NSUserActivity对象从未更改,并且在创建时已完全配置,则无需重写UIResponder.updateUserActivityState方法

但是,为了保持一致性和将来的验证(如果您确实使该用户活动对象可变),当响应者链收到更改通知时,应用程序可能仍然希望使用updateUserActivityState来填充活动

但是,当我们只设置一次活动而从不更新它时,我们应该这样做吗 还必须始终实现updateUserActivityState吗

如果NSUserActivity对象从未更改,并且在创建时已完全配置,则无需重写UIResponder.updateUserActivityState方法

但是,为了保持一致性和将来的验证(如果您确实使该用户活动对象可变),当响应者链收到更改通知时,应用程序可能仍然希望使用updateUserActivityState来填充活动