Вы можете использовать КВО наблюдать invalidated
свойство:
// a global context object to identify our observations
let myContext = UnsafePointer<()>()
class MyClass {
func stuff() {
object.addObserver(self, forKeyPath: "invalidated", options: [.Prior], context: myContext)
}
override func observeValueForKeyPath(keyPath: String!, ofObject object: AnyObject!, change: [NSObject : AnyObject]!, context: UnsafePointer<()>) {
if context == myContext && keyPath == "invalidated" {
print("\(object) is about to be deleted")
object.removeObserver(self, forKeyPath: "invalidated", context: myContext)
}
else {
super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
}
}
}
Вы можете использовать что-то вроде PMKVObserver или KVOController, чтобы упростить это, как использование КВО непосредственно может быть неприятным.
I хотя Realm имеет эту функцию 'addNotificationBlock (block: (RealmCollectionChange -> Void)) -> NotificationToken'. Вы можете отслеживать удаленные идентификаторы в объекте RealmCollectionChange –