我花了很多时间在 CoreSpotlight 上找到 NSUserActivity 的好处,无论我是否实际上找不到任何东西。
实际上,它无法索引我们的项目,我们通过 NSUserActivity 设置。我已经在下面附上了我的代码片段,它应该按照苹果文档的说法运行,但是它不会。
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 ?
答案 0 :(得分:4)
根据Apple文档
为了保证活动及其元数据被编入索引,您必须拥有对活动的强引用,直到将其添加到索引中。有两种方法可以执行此操作:第一种方法是将活动分配给创建活动的控制器对象中的属性。第二种方法是使用UIResponder对象的userActivity属性。如果使用第二种方式,则需要在updateUserActivityState:方法中设置元数据 - 例如userInfo属性中的信息。否则,您在活动中设置的元数据将不会保留。
您的活动在被编入索引之前已取消分配,并且最好使用self
保留。
你的第二个问题的答案对我来说仍然是个谜。
可能它的性能,索引中没有项目,重要的是CoreSpotlight不提供的公开索引。我们必须再等一会儿才能得到你问题的答案