【发布时间】:2015-09-13 10:52:10
【问题描述】:
我在 iOS 9 中创建了一个可搜索的 NSUserActivity,如下所示。
userActivity = [[NSUserActivity alloc] initWithActivityType:@"com.example.app.conversation"];
userActivity.title = @"Conversation with Fred Thompson";
**userActivity.keywords = [NSSet setWithObjects:@"Holiday" @"Summer", nil];**
userActivity.userInfo = @{@"keyOne":@"valueOne", @"keyTwo":@"valueTwo"};
userActivity.eligibleForSearch = YES;
userActivity.eligibleForPublicIndexing = NO;
userActivity.eligibleForHandoff = NO;
userActivity.contentAttributeSet = attributeSet;
[userActivity becomeCurrent];
并且我在 info.plist 中注册了以下活动类型:
com.example.app.conversation
在 Spotlight 中,我可以搜索 TITLE 的任何单词并找到我的 UserActivity;但是,没有一个关键字可用于查找我的 UserActivity。
因此,搜索“Fred Thompson”将返回活动,因为这些词在标题中;但是搜索“Holiday Summer”将不会返回任何结果。 (注意:关键字对我来说适用于 CSSearchableItems)。是的,我也尝试使用晦涩的词来确保我的结果不会被其他更受欢迎的结果淹没。
但是,无论如何,我都无法通过提供的关键字找到我的 NSUSerActivity。我究竟做错了什么?
【问题讨论】:
-
NSUserActivity 结果不起作用,因为活动在索引之前就被释放了。要使其正常工作,请保留该属性。 self.userActivity = activity // 使 userActivity 成为当前 ViewCrtl 的活动。此外,请确保您已将 CoreSpotlight 和 MobileCoreServices 框架添加到您的项目中。 Spotlight 上有一个很好的教程:code.tutsplus.com/tutorials/…
-
您可以尝试使用
CSSearchableItemAttributeSet实例设置用户活动的contentAttributeSet属性(它还有另一个keywords属性。请注意,您需要导入CoreSpotlight才能看到contentAttributeSetNSUserActivity上的属性。
标签: ios objective-c ios9 corespotlight