使用 Spotlight 从 NSUserActivity 访问 domainIdentifier
Accessing domainIdentifier from NSUserActivity with Spotlight
我正在将 'Person' 和 'Product' 对象索引到 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: "person" & "product"。但是,当我返回应用程序时如何访问这些 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
}
据我所知,在 CoreSpotlight
中您无法直接访问 domainIdentifier
。您拥有的是 uniqueIdentifier
,因此您可以使用某种前缀来解决它。要获取标识符,您可以使用:
if let itemActivityIdentifier = userActivity.userInfo?["kCSSearchableItemActivityIdentifier"] {
}
在你的 AppDelegate
.
我正在将 'Person' 和 'Product' 对象索引到 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: "person" & "product"。但是,当我返回应用程序时如何访问这些 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
}
据我所知,在 CoreSpotlight
中您无法直接访问 domainIdentifier
。您拥有的是 uniqueIdentifier
,因此您可以使用某种前缀来解决它。要获取标识符,您可以使用:
if let itemActivityIdentifier = userActivity.userInfo?["kCSSearchableItemActivityIdentifier"] {
}
在你的 AppDelegate
.