18
Update löscht

Dies ist der Code, speichere ich das Modell über magischen Record:NSFetchedResultsController ruft didChangeObject statt

MagicalRecord.saveWithBlock({ (localContext) -> Void in 
        var localNotification = CDNotification.MR_findFirstByAttribute("notificationID", withValue: notification.notificationID, inContext: localContext) as CDNotification 
        localNotification.readNumber = NSNumber(bool: true) 
       }) 

Löschen statt Update aufgerufen wird, nachdem der Code oben genannt wird:

func controller(controller: NSFetchedResultsController, didChangeObject object: AnyObject, atIndexPath indexPath: NSIndexPath, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath) { 
    switch type { 
    case NSFetchedResultsChangeType.Insert: 
     self.tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Fade) 
    case NSFetchedResultsChangeType.Update: 
     if let cell = self.tableView.cellForRowAtIndexPath(indexPath){ 
      self.configureCell(cell as TableViewCell, atIndexPath: indexPath, withNotification: object as CDNotification) 
     } 
     self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    case NSFetchedResultsChangeType.Move: 
     self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
     self.tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Fade) 
    case NSFetchedResultsChangeType.Delete: 
     self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    default: 
     return 
    } 
} 

Dies geschieht nur, wenn ich das Prädikat für die Abrufanforderung im Beispiel festlegen:

+0

GENAU :-) Das gleiche Problem. Hast du die Antwort gefunden? –

+0

Gibt es eine Problemumgehung dafür? Dies ist ein ernsthafter Fehler. Ich würde innerhalb von 'DELETE' überprüfen, ob es wirklich aus der Datenbank entfernt wurde, aber es wurde aus 'NSFetchedResultsController' entfernt, daher weiß ich nicht, welches Objekt ich prüfen sollte, ob es in Core Data existiert. Irgendwelche Ideen? –

+0

Ich habe das gleiche Problem hier: http://stackoverflow.com/questions/32377070/nsfetchedresultscontroller-remove-row-from-guidableview-after-update-relationship. Aber ich aktualisiere Beziehungen statt Eigenschaften. Das gleiche Problem. –

Antwort

4

Was ist? passiert hier ist, dass anstelle der NSFetchedResultsChangeUpdate Änderung Ereignis erwarten Sie, erhalten Sie eine gefolgt von NSFetchedResultsChangeInsert. Sie können auch eine NSFetchedResultsChangeMove mit dem gleichen indexPath als Quelle und Ziel sehen. Dies ist ein bekanntes Problem in several beta versions of iOS 922380191 und anderen.

+0

Also gibt es keine Problemumgehung dafür? Gibt es eine Möglichkeit, dies zu lösen oder nicht? –

+0

Datei ein Radar und es kann behoben werden. Wenn Sie Eltern-Kind-Kontexte korrekt verwenden, ohne dies zu blockieren, scheint dies nicht zu stimulieren. – quellish

+0

Eltern-Kind-Kontext? Was meinst du genau? Der Kontext meiner 'NSFetchedResultsController' sollte ein übergeordneter Kontext für den Kontext innerhalb von' saveWithBlock' sein? –