iOS 9应用程序搜索sendUserActivityToServer后无效,所以什么都不做

时间:2017-08-02 22:45:41

标签: ios swift nsuseractivity

我想将我的笔记编入索引以进行全局搜索。我使用了本教程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失效后,所以   什么都不做。

1 个答案:

答案 0 :(得分:3)

我还没与AppSearch合作过。但我的猜测是它可能与对象生命周期有关。

在您发布的代码中,没有对error: [Errno 2] No such file or directory: '/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl' 对象的引用,因此在循环体执行后立即取消分配。

我相信该对象应该持续到活动调用NSUserActivity为止。

并保持警惕,因为resignCurrent是代码中的结构,并且它具有值语义,因此每次处理时都会复制它。