Мне нужно наблюдать значение типа списка объекта realm.Как получить «старое» значение при наблюдении области Тип списка по kvo
Мне нужно получить новое и старое значение при вызове наблюдателя.
Проблема заключается в том, что не удается получить доступ к «старому» значению в функции observValueForKeyPath.
Если я регистрирую «изменение» в этой функции, вместо обычного «старого» & «Новый» отображается следующее.
Optional(["new": <__NSArrayI 0x7fcc8bc57150>(
User {
}
)
, "indexes": <_NSCachedIndexSet: 0x7fcc8bc07970>[number of indexes: 1 (in 1 ranges), indexes: (1)], "kind": 2])
Что это значит и как я могу получить доступ к «старому» значению?
import UIKit
import RealmSwift
class ValueContainer: Object {
let users = List<User>()
}
class User: Object {
}
class ViewController: UIViewController {
let container = ValueContainer()
override func viewDidLoad() {
super.viewDidLoad()
container.users.appendContentsOf([User(), User(), User(), User()])
container.addObserver(self, forKeyPath: "users", options: [.New, .Old], context: nil)
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
print("---- Observer called ---")
print("KeyPath:\(keyPath)")
guard let container = object as? ValueContainer else {
print("Object cast failed")
return
}
print("Change")
print(change)
}
@IBAction func buttonTap(sender: AnyObject) {
container.users.insert(User(), atIndex: 1)
}
}
Я не вижу нигде в вашем коде, где вы фактически добавляете объекты в Царство. Вы просто наблюдаете свойство коллекции объекта, поэтому вы возвращаетесь в параметр «change» для изменений в коллекции, а не для отдельных элементов. –
Мне нужно наблюдать объектную модель области, независимо от того, сохранена она в царстве или нет. – Bigair