В чем разница между CSSearchableIndex и NSUserActivity в API поиска? Как часто звоните?
Я вижу ниже код в iOS9Sampler для использования Search API
в iOS 9. Он использует оба 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")
}
}
1 ответ
Решение
Тип контента, который вы индексируете, и то, как пользователь взаимодействует с ним, определят, целесообразно ли его использовать. NSUserActivity
или же CSSearchableItem
,
Это объясняется в Руководстве по программированию поиска приложений, и приведены примеры для нескольких различных сценариев, поэтому обязательно внимательно изучите их. Некоторые заметки:
- использование
NSUserActivity
индексировать элементы по мере того, как пользователи выполняют действия в вашем приложении, такие как посещение точки навигации или создание и просмотр контента. - Используйте Core Spotlight для добавления содержимого, специфичного для приложения, в указатель на устройстве, такого как постоянные пользовательские данные - документы, фотографии и другие типы содержимого.
CSSearchableItem
не требует от пользователя посещения контента, в отличие отNSUserActivity
,CSSearchableItem
не является публично индексируемым, в то время какNSUserActivity
является.