无论我实际上找不到任何东西,我都花了很多时间来找到NSUserActivity比[[CoreSpotlight的好处。
实际上,它无法索引我们通过NSUserActivity
设置的项目。我在下面附上了我的代码段,该代码段应按照Apple文档的要求运行,但是不会运行。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()
我想找到答案进行搜索,因为可以使用CoreSpotlight来实现?]为什么我们需要使用NSUserActivity
为了确保对活动及其元数据进行索引,必须对活动进行严格引用,直到将其添加到索引中为止。有两种方法可以执行此操作:第一种方法是将活动分配给创建活动的控制器对象中的属性。第二种方法是使用UIResponder对象的userActivity属性。如果使用第二种方法,则需要在updateUserActivityState:方法中设置元数据,例如userInfo属性中的信息;否则,您在活动上设置的元数据将不会保留。
您的活动在获得索引之前已被释放,最好使用self
保留。
第二个问题的答案对我来说仍然是个谜。
也许就像性能一样,索引中没有项目,而且重要的是CoreSpotlight不提供的
public indexing。我们必须再等一会才能为您的问题提供答案。