Доступ к domainIdentifier из NSUserActivity с помощью Spotlight
Я индексирую объекты "Персона" и "Продукт" в Spotlight следующим образом:
// Person
let personItem = CSSearchableItem(uniqueIdentifier: personID, domainIdentifier: "person", attributeSet: attributeSet)
CSSearchableIndex.defaultSearchableIndex().indexSearchableItems([personItem]) { (error: NSError?) -> Void in
if let error = error {
print("Indexing error: \(error.localizedDescription)")
} else {
print("person added to spotlight")
}
}
// Product
let productItem = CSSearchableItem(uniqueIdentifier: productID, domainIdentifier: "product", attributeSet: attributeSet)
CSSearchableIndex.defaultSearchableIndex().indexSearchableItems([productItem]) { (error: NSError?) -> Void in
if let error = error {
print("Indexing error: \(error.localizedDescription)")
} else {
print("product added to spotlight")
}
}
Вы можете видеть, что я использую для domainIdentifier
s: "человек" и "продукт". Но как бы я получить доступ к этим domainIdentifier
Когда я вернусь в приложение?
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
if userActivity.activityType == CSSearchableItemActionType {
// if product do this
// if person do that
}
return true
}
1 ответ
Решение
Из того, что я знаю, в CoreSpotlight
у вас нет прямого доступа к domainIdentifier
, Что у вас есть uniqueIdentifier
, так что вы можете обойти это с каким-то префиксом. Для получения идентификатора вы можете использовать:
if let itemActivityIdentifier = userActivity.userInfo?["kCSSearchableItemActivityIdentifier"] {
}
в вашем AppDelegate
,