搜索中的 CSSearchableIndex 和 NSUserActivity 有什么区别 API?多久打电话一次?
What is difference of CSSearchableIndex and NSUserActivity in Search API? How often call?
我在 iOS9Sampler 中看到下面的代码以在 iOS 9 中使用 Search API
。它同时使用 NSUserActivity
和 CSSearchableIndex
。所以我想问个问题:
- 什么时候用
NSUserActivity
,什么时候用CSSearchableIndex
?我看到它在 Spotlight 中搜索时得到相同的结果。
- 下面的代码调用视图控制器的每个
viewDidLoad
。这是正确的吗?还是只调用一次?我怎样才能检查一次来电?
NSUserActivity
let activityType = String(format: "%@.%@", uniqueIdentifier, domainIdentifier)
activity = NSUserActivity(activityType: activityType)
activity.title = "iOS-9-Sampler_NSUserActivity"
activity.keywords = Set<String>(arrayLiteral: "dog", "cat", "pig", "sheep")
activity.eligibleForSearch = true
activity.becomeCurrent()
核心聚焦
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeImage as String)
attributeSet.title = "iOS-9-Sampler_CoreSpotlight"
attributeSet.contentDescription = "iOS-9-Sampler is a code example collection for new features of iOS 9."
attributeSet.keywords = ["dog", "cat", "bird", "fish"]
let image = UIImage(named: "m7")!
let data = UIImagePNGRepresentation(image)
attributeSet.thumbnailData = data
let searchableItem = CSSearchableItem(
uniqueIdentifier: uniqueIdentifier,
domainIdentifier: domainIdentifier,
attributeSet: attributeSet)
CSSearchableIndex.defaultSearchableIndex().indexSearchableItems([searchableItem]) { (error) -> Void in
if error != nil {
print("failed with error:\(error)\n")
}
else {
print("Indexed!\n")
}
}
您要编制索引的内容类型以及用户与之交互的方式将决定使用 NSUserActivity
或 CSSearchableItem
是否合适。
这在 App Search Programming Guide 中进行了解释,并针对几个不同的场景提供了示例,因此请务必仔细阅读。一些注意事项:
- 使用
NSUserActivity
在用户执行活动时为项目编制索引
您的应用程序,例如访问导航点或创建和查看
内容。
- 使用 Core Spotlight 将特定于应用程序的内容添加到设备上
索引,例如持久性用户数据 - 文档、照片和其他
内容类型。
CSSearchableItem
不要求用户访问内容,
不像 NSUserActivity
.
CSSearchableItem
不可公开索引,而 NSUserActivity
是。
我在 iOS9Sampler 中看到下面的代码以在 iOS 9 中使用 Search API
。它同时使用 NSUserActivity
和 CSSearchableIndex
。所以我想问个问题:
- 什么时候用
NSUserActivity
,什么时候用CSSearchableIndex
?我看到它在 Spotlight 中搜索时得到相同的结果。 - 下面的代码调用视图控制器的每个
viewDidLoad
。这是正确的吗?还是只调用一次?我怎样才能检查一次来电?
NSUserActivity
let activityType = String(format: "%@.%@", uniqueIdentifier, domainIdentifier)
activity = NSUserActivity(activityType: activityType)
activity.title = "iOS-9-Sampler_NSUserActivity"
activity.keywords = Set<String>(arrayLiteral: "dog", "cat", "pig", "sheep")
activity.eligibleForSearch = true
activity.becomeCurrent()
核心聚焦
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeImage as String)
attributeSet.title = "iOS-9-Sampler_CoreSpotlight"
attributeSet.contentDescription = "iOS-9-Sampler is a code example collection for new features of iOS 9."
attributeSet.keywords = ["dog", "cat", "bird", "fish"]
let image = UIImage(named: "m7")!
let data = UIImagePNGRepresentation(image)
attributeSet.thumbnailData = data
let searchableItem = CSSearchableItem(
uniqueIdentifier: uniqueIdentifier,
domainIdentifier: domainIdentifier,
attributeSet: attributeSet)
CSSearchableIndex.defaultSearchableIndex().indexSearchableItems([searchableItem]) { (error) -> Void in
if error != nil {
print("failed with error:\(error)\n")
}
else {
print("Indexed!\n")
}
}
您要编制索引的内容类型以及用户与之交互的方式将决定使用 NSUserActivity
或 CSSearchableItem
是否合适。
这在 App Search Programming Guide 中进行了解释,并针对几个不同的场景提供了示例,因此请务必仔细阅读。一些注意事项:
- 使用
NSUserActivity
在用户执行活动时为项目编制索引 您的应用程序,例如访问导航点或创建和查看 内容。 - 使用 Core Spotlight 将特定于应用程序的内容添加到设备上 索引,例如持久性用户数据 - 文档、照片和其他 内容类型。
CSSearchableItem
不要求用户访问内容, 不像NSUserActivity
.CSSearchableItem
不可公开索引,而NSUserActivity
是。