我正在尝试通过 SwiftUI 而不是 UIKit 或 AppKit 来实现快速笔记。我不确定下面的行为是由于错误还是我遗漏了什么。
我已经使用.userActivity()
视图修饰符成功地为 Handoff、Spotlight 和 Siri Reminders 实现了 NSUserActivity。这些 NSUserActivity 实例使用NSUserActivity.userInfo
字典来存储并通过方法正确恢复内容.onContinueUserActivity(perform: )
。
快速笔记需要使用.persistentIdentifier
or.targetContentIdentifier
属性,而不是.userInfo
单独使用字典。但是,当我使用下面的代码将其中任何一个设置为唯一标识符时,它们没有正确存储在用户活动中。
MyView()
.userActivity(ActivityString, updateUserActivity)
private func updateUserActivity(_ activity: NSUserActivity) {
activity.isEligibleForSearch = true
activity.isEligibleForHandoff = true
activity.title = "Title"
activity.targetContentIdentifier = myItemUniqueID
activity.persistentIdentifier = myItemUniqueID
activity.userInfo = ["id": myItemUniqueID]
print(activity.targetContentIdentifier) // Correctly prints
print(activity.persistentIdentifier) // Correctly prints
print(activity.userInfo) // Correctly prints
}
设置上面的用户活动时,标识符正确打印。但是,在恢复用户活动时(通过 Handoff 和 Spotlight Search 测试),targetContentIdentifier 和 persistentIdentifier 字符串为空。
MyView()
.onContinueUserActivity(ActivityString, perform: continueUserActivity)
private func continueUserActivity(_ activity: NSUserActivity) {
print(activity.persistentIdentifier) // Nil
print(activity.targetContentIdentifier) // Nil
print(activity.userInfo) // Correctly prints
}
还有什么我必须做的,或者这是出乎意料的行为吗?