Objective c NSUserActivity和CoreSpotlight的使用

Objective c NSUserActivity和CoreSpotlight的使用,objective-c,swift,ios9,nsuseractivity,Objective C,Swift,Ios9,Nsuseractivity,我花了很多时间来寻找nsseractivity相对于corephootlight的好处,不管我是不是真的找不到任何东西 实际上,它无法为我们的项目编制索引,我们通过nsserActivity设置了索引。我在下面附上了我的代码片段,它应该按照苹果的文档工作,但它不会 let personName = "Jon Doe" let activity = NSUserActivity(activityType: "com.SearchAPIs.test”)

我花了很多时间来寻找nsseractivity相对于corephootlight的好处,不管我是不是真的找不到任何东西

实际上,它无法为我们的项目编制索引,我们通过nsserActivity设置了索引。我在下面附上了我的代码片段,它应该按照苹果的文档工作,但它不会

        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()
我想找到你的答案

为什么我们需要在搜索方式中使用nsserActivity,因为它可以通过CoreSpotlight实现


根据苹果公司的文件

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

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


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


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

@user3745996是否可以同时为多个活动编制索引,例如使用for循环或其他内容。第二个问题的答案如下: