NSUserActivity和CoreSpotlight的用法

问题描述 投票:2回答:1

无论我实际上找不到任何东西,我都花了很多时间来找到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()
我想找到答案

为什么我们需要使用

NSUserActivity

进行搜索,因为可以使用CoreSpotlight来实现?]
objective-c swift ios9 nsuseractivity
1个回答
4
投票
根据Apple文档

为了确保对活动及其元数据进行索引,必须对活动进行严格引用,直到将其添加到索引中为止。有两种方法可以执行此操作:第一种方法是将活动分配给创建活动的控制器对象中的属性。第二种方法是使用UIResponder对象的userActivity属性。如果使用第二种方法,则需要在updateUserActivityState:方法中设置元数据,例如userInfo属性中的信息;否则,您在活动上设置的元数据将不会保留。

您的活动在获得索引之前已被释放,最好使用self保留。

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

也许就像性能一样,索引中没有项目,而且重要的是CoreSpotlight不提供的

public indexing。我们必须再等一会才能为您的问题提供答案。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.