2017-01-06 5 views
0

Ich versuche es so zu machen, dass, wenn der Benutzer sich von meiner App abmeldet, die CoreData mit der folgenden Funktion gelöscht wird.CoreData gibt keine Zeilen zurück

Das Problem ist, wenn ich die Funktion beim Abmelden des Benutzers aufrufen, ist die Array-Länge 0, so dass nichts gelöscht wird. Das ist schlecht, weil die Länge nicht 0 sein sollte. Ich bin 100%, es gibt Einträge, die zurückgegeben werden sollten, da, wenn ich die gleiche Funktion beim Start aufrufe, das Array aufgefüllt wird.

Irgendwelche Ideen zu was verursacht dies?

Antwort

1

Nachricht holen hat die Unterschrift NSFetchRequest<cdMessageMO>

let messageFetch: NSFetchRequest<cdMessageMO> 

Aber dann du bist Kraft NSFetchRequest<NSFetchRequestResult> Gießen

array = try moc.fetch(messageFetch as! NSFetchRequest<NSFetchRequestResult>) as! [cdMessageMO] 

Ich bin ziemlich sicher, das wird immer scheitern (?)

Auch Wenn Sie nichts mit den Nachrichten tun (Sie wollen sie nur löschen), können Sie das Batch-Löschen verwenden, das schneller ist, weil es nicht wirklich geladen wird die Objekte in den Speicher:

let context = managedObjectContext 

let fetch = NSFetchRequest(entityName: "Message") 
let delete = NSBatchDeleteRequest(fetchRequest: fetch) 

do { 
    try myPersistentStoreCoordinator.executeRequest(delete, withContext: context) 
} catch { 
    // handle the error 
} 
Verwandte Themen