【问题标题】:Usage of NSUserActivity and CoreSpotlightNSUserActivity 和 CoreSpotlight 的使用
【发布时间】:2015-11-15 01:39:06
【问题描述】:

我花了很多时间来寻找 NSUserActivity 优于 CoreSpotlight 的好处,不管我实际上找不到任何东西。

实际上,它无法索引我们通过 NSUserActivity 设置的项目。我在下面附上了我的 sn-p,它应该可以按照苹果文档工作,但它不会。

        let personName = "Jon Doe"
        let activity = NSUserActivity(activityType: "com.SearchAPIs.test”)
        activity.userInfo = ["name": "Jon Doe"]
        activity.title = person.name
        let keywords = personName.componentsSeparatedByString(" ")
        activity.keywords = Set(keywords)
        activity.eligibleForSearch = true
        activity.eligibleForPublicIndexing = true
        activity.expirationDate = NSDate().dateByAddingTimeInterval(16666600)
        activity.becomeCurrent()

我想找到答案

为什么我们需要使用 NSUserActivity 进行搜索,因为它可以通过 CoreSpotlight 实现?

【问题讨论】:

标签: objective-c swift ios9 nsuseractivity


【解决方案1】:

根据苹果文档

为保证活动及其元数据被编入索引,您必须持有对该活动的强引用,直到它被添加到索引中。有两种方法可以做到这一点: 第一种方法是将活动分配给创建活动的控制器对象中的属性。第二种方法是使用 UIResponder 对象的 userActivity 属性。如果使用第二种方式,则需要在updateUserActivityState:方法中设置元数据——比如userInfo属性中的信息;否则,您在 Activity 上设置的元数据将不会被持久化。

您的活动在被编入索引之前被解除分配,最好使用self 保留。

你的第二个问题的答案对我来说仍然是个谜。

也许它就像性能,索引中的项目数量,重要的是CoreSpotlight不提供的公共索引。我们必须再等一会儿才能得到您问题的答案。

【讨论】:

  • @user3745996 是否可以同时索引多个活动,例如使用 for 循环或其他方法。
猜你喜欢
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多