Ich habe ein Problem beim Zugriff auf Daten in abgerufenen Ergebnissen von CoreData
. Die Daten werden in UITableView
präsentiert, und das zeigt gut, ich versuche, eine Option zum Filtern der Daten basierend auf einem Attribut zu implementieren. Dies funktioniert auch gut durch .Zugriff auf Entitätsattributwerte, die von CoreData abgerufen wurden
Die Abrufanforderung wird ordnungsgemäß ausgeführt. Es treten jedoch Probleme auf, wenn versucht wird, Werte aus einem der Attribute der abgerufenen Entität zu extrahieren, um sie zu Gesamtkosten hinzuzufügen.
Der Code für die gefilterten Ergebnisse zu holen:
func attemptFilteredFetch(filter: Array<NSPredicate>)
{
let filterCriteria: NSCompoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: filter)
let fetchRequest: NSFetchRequest<StoredExpense> = StoredExpense.fetchRequest()
let dateSort = NSSortDescriptor(key: "dateOfExpense", ascending: false)
fetchRequest.sortDescriptors = [dateSort]
fetchRequest.predicate = filterCriteria
let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
controller.delegate = self
self.controller = controller
do
{
try controller.performFetch()
}
catch
{
let error = error as NSError
print("\(error)")
}
expenseList.reloadData()
}
So habe ich eine Methode weit habe ich versucht, online gefunden here und ähnliche gefunden, aber die App stürzt ab, wenn die attemptFilteredFetch()
Funktion aufgerufen wird.
Ich könnte dies in die falsche Richtung gehen, aber ich erwarte, dass ich die Abrufanforderung in ein Array hinzufügen und durchlaufen kann, um den Gesamtwert zu erhalten.
Gibt es einen besseren Weg? Oder gibt es eine Möglichkeit, auf den Wert des Attributs während des Betriebs zuzugreifen?
Welche Art von Fehler zeigt es? Haben Sie auch das Modell geändert? Möglicherweise müssen Sie die Lichtmigration aktivieren. – CryingHippo
Ich habe es herausgefunden. Es scheint, dass die manuelle Generierung von NSManagedObject Subclass zu einem Mehrdeutigkeitsfehler führt. Ich habe das manuell erstellte Modell entfernt und das Problem wurde behoben. – boywithaxe