iOS 9 App Search sendUserActivityToServer 在它失效后,所以什么都不做

标签 ios swift nsuseractivity app-search

我想为我的笔记建立索引以进行全局搜索。我用了a tutorial by Ray Wenderlich .

我在 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
    }
}

但是我不知道怎么注册。 在我的 View Controller 中,我尝试了:

override func viewDidLoad() {
   super.viewDidLoad()
   for note in self.notes {

      note.userActivity.becomeCurrent()
   }
}

但总是得到:

sendUserActivityToServer, called on activity EC1785C0-2904-4F0A-9885-F4DB91C4B245 after it had been invalidated, so doing nothing.

最佳答案

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

在您发布的代码中,没有对 NSUserActivity 对象的引用,因此它会在循环体执行后立即释放。

我认为该对象应该持续存在,直到 resignCurrent 在事件中被调用。

并且要警惕,因为Note在你的代码中是一个结构体,它有一个值语义,所以每次处理它时都会复制它。

关于iOS 9 App Search sendUserActivityToServer 在它失效后,所以什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45472177/

相关文章:

android - react-native-keyboard-aware-scroll-view 无法正常工作

ios - 为什么有时我需要重新启动 iOS 蓝牙(使用系统按钮)才能使我的中央管理器能够成功连接?

swift - View 和 ViewController 之间有什么区别?

swift - 我的 xcworkspace 有问题吗?

ios8 - 从 native 应用程序到网站的切换不起作用

ios - Core Spotlight,objective-c 中的 continueUserActivity?

ios - NSUserActivity 没有在 osx 上建立索引

ios - 在键盘顶部显示 TextView 时改进动画

objective-c - NSDateFormatter 获取 stringFromDate 错误

swift - 单击静态表格单元格时可以从服务器获取数据吗?