Ich habe eine App, die Core Spotlight
verwendet, um den App-Inhalt zu indizieren. Die Anwendung verwendet auch Core Data
, und beim Erstellen einer NSManagedObject
die Details des Objekts werden für die CSSearchableItem
dann zu der Spotlight Search Index
hinzugefügt.Update Spotlight Search Index bei der Arbeit mit Core Data?
Die Sache ist, ich habe den Eindruck, dass es keine Richtungsreferenz auf die NSManagedObject
und die CSSearchableItem
gibt, also, wenn das Element zum Index hinzugefügt wird, kopiert es nur die Details.
Hier ist ein Beispiel für das Hinzufügen eines Elements zum Index.
//Spotlight Index Search
// Create an attribute set to describe an item.
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeData as String)
// Add metadata that supplies details about the item.
attributeSet.title = "\(object.title)"
attributeSet.contentDescription = "\(object.description)"
// Create an item with a unique identifier, a domain identifier, and the attribute set you created earlier.
let item = CSSearchableItem(uniqueIdentifier: "1", domainIdentifier: "ObjectType", attributeSet: attributeSet)
// Add the item to the on-device index.
CSSearchableIndex.defaultSearchableIndex().indexSearchableItems([item]) { error in
if error != nil {
print(error?.localizedDescription)
}
else {
print("Item indexed.")
}
}
Nach der Zugabe sind das Element in den Index aller Artikel über Spotlight-Suche durchsucht werden. Eine Funktion in der appDelegate
kümmert sich um Aktionen bei der Auswahl von Indexpositionen.
So scheint alles in Ordnung, bis ich die NSManagedObject
innerhalb der App bearbeiten oder löschen, weil die Searchable Items Index
den Index nicht die Elemente im Index aufgeführten nicht aktualisiert sind nicht auf dem neuesten Stand und noch gelöscht/alte Daten aufzulisten.
Also wie kann ich CSSearchableIndex
Artikel aktualisiert halten, wenn ein NSManagedObject
aktualisiert wird?
Dies scheint die passendere Antwort zu mir – cdf1982