我想将我的笔记编入索引以进行全局搜索。我使用了本教程https://www.raywenderlich.com/116608/ios-9-app-search-tutorial-introduction-to-app-search
我在info.plist中添加了字符串:
"myapp.com.notes.note"
这是我的目标:
struct Note {
public static let domainIdentifier = "myapp.com.notes.note"
public var userActivityUserInfo:[String: Any] {
return ["id": note_id]
}
public var userActivity: NSUserActivity {
let activity = NSUserActivity(activityType: Note.domainIdentifier)
activity.title = "\(note.title)"
activity.userInfo = userActivityUserInfo
activity.keywords = [note.title, note.text]
return activity
}
}
但我不明白我该如何注册。 在我的视图控制器中,我试过:
override func viewDidLoad() {
super.viewDidLoad()
for note in self.notes {
note.userActivity.becomeCurrent()
}
}
但总是得到:
sendUserActivityToServer,调用活动 EC1785C0-2904-4F0A-9885-F4DB91C4B245失效后,所以 什么都不做。
答案 0 :(得分:3)
我还没与AppSearch合作过。但我的猜测是它可能与对象生命周期有关。
在您发布的代码中,没有对error: [Errno 2] No such file or directory: '/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl'
对象的引用,因此在循环体执行后立即取消分配。
我相信该对象应该持续到活动调用NSUserActivity
为止。
并保持警惕,因为resignCurrent
是代码中的结构,并且它具有值语义,因此每次处理时都会复制它。