Я прочитал какой-то учебник и обнаружил, что NSUserActivity
для индексной информации, когда пользователь выполняет действие, Core Spotlight
для индексации набора данных контента в приложении.
Использовать NSUserActivity
var activity = NSUserActivity(activityType: "com.example.demo.searchapi")
activity.title = contactEntity.name
activity.userInfo = ["id": contactEntity.uid]
activity.eligibleForSearch = true
activity.keywords = NSSet(array: [contactEntity.name,contactEntity.phoneNumber, contactEntity.email]) as! Set
activity.becomeCurrent()
Использовать основное внимание
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeContact as String)
attributeSet.title = contactEntity.name
attributeSet.relatedUniqueIdentifier = contactEntity.uid
let searchableItem = CSSearchableItem(uniqueIdentifier: contactEntity.uid, domainIdentifier: "com.example.demo.searchapi", attributeSet: attributeSet)
CSSearchableIndex.defaultSearchableIndex().indexSearchableItems(searchableItems) { error in
if let error = error {
print("Error indexing: \(error)")
} else {
print("Indexed.")
}
Но я не думаю, что есть разница между двумя результатами решения. Если пользователь совершает действие, я могу использовать Core Spotlight
вместо NSUserActivity
. Это дает мне тот же результат.
Итак, почему Apple должна предоставлять два разных решения, которые дают одинаковый результат?
NSUserActivity
в iOS 9 имеетcontentAttributeSet
типаCSSearchableItemAttributeSet
- person onmyway133   schedule 07.01.2016