2016-04-06 3 views
1

Для целей отладки я хотел бы установить наблюдателей/наблюдателей на моделях, но пока не нашел подсказки.Как установить наблюдателей на модели Realm?

Уведомление Я довольно новичок в разработке iOS (менее месяца), поэтому мне может быть что-то не хватает.

+0

Вы пытались использовать браузер Realm – bcamur

ответ

1

Если вы хотите наблюдать целый класс объектов, вы можете сделать запрос, применить фильтры, а затем наблюдать за ними Results за Notifications.

Если вы хотите наблюдать за изменениями одного объекта, вы можете получить его, а затем просмотреть интересующие вас объекты через Key-Value Observation (KVO).

0

Вот пример на KVO в Realm (Swift): Просто для демонстрации того, как работает KVO i Realm с постоянными объектами.

class MyRealmClass: Object { 
    dynamic var id = NSUUID().UUIDString 
    dynamic var date: NSDate? 
    override static func primaryKey() -> String? { 
     return "id" 
    } 
} 

class ViewController: UIViewController { 
    var myObject: MyRealmClass? 

    private var myContext = 0 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     myObject = MyRealmClass() 
     try! uiRealm.write({() -> Void in 
      myObject?.date = NSDate() 
      uiRealm.add(myObject!, update: true) 
      print("New MyClass object initialized with date property set to \(myObject!.date!)") 
     }) 

     myObject = uiRealm.objects(MyRealmClass).last 
     myObject!.addObserver(self, forKeyPath: "date", options: .New, context: &myContext) 

     //Sleep before updating the objects 'date' property. 
     NSThread.sleepForTimeInterval(5) 

     //Update the property (this will trigger the observeValueForKeyPath(_:object:change:context:) method) 
     try! uiRealm.write({() -> Void in 
      myObject!.date = NSDate() 
     }) 
    } 

    override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) { 
     if context == &myContext { 
      print("Date property has changed, new value is \(change![NSKeyValueChangeNewKey]!)") 
     } 
    } 
}