2016-03-24 3 views
1

Ich habe diesen kleinen Code, der auf einer leeren Liste abstürzt, aber funktioniert gut, wenn die Liste tatsächlich aus einer Objekt-Unterklasse abgerufen wurde PopContact Eine Idee, warum das abstürzt?Warum stürzt addNotificationBlock auf einer leeren Liste ab?

class Item: Object { 

} 
class Container: Object { 
    let items = List<Item>() 

} 

func testRealmListNotification(mContainer: Container?) { 
    let list = mContainer?.items ?? List<Item>() 
    let token = list.addNotificationBlock { (updatedList: List<Item>) ->() in 
     log(updatedList) 
    } 
    //dispose of token later 
} 

Antwort

2

Benachrichtigungen werden nach einer Schreibtransaktion für den Realm gesendet, dass ein Objekt in enthalten ist, begangen wird, so dass ein neu erstellte Objekt, das noch nicht zu einem Realm hinzugefügt würde nie irgendwelche Mitteilungen hat. Anstatt einfach nichts zu tun, gibt addNotificationBlock() eine Ausnahme aus, um Sie darauf hinzuweisen, dass es nicht funktioniert.

+0

Ich bekomme das, aber warum nicht die Funktion als werfen markieren? zur Zeit seine öffentliche Funktion addNotificationBlock (Block: (RealmSwift.List ) ->()) -> RealmSwift.NotificationToken –

+0

Swift-Ausnahmen werden für Laufzeitfehler, nicht Vorbedingung Verletzungen verwendet. –

+0

okay, danke @Thomas –