Swift 观察领域的变化不是开火

Swift 观察领域的变化不是开火,swift,realm,Swift,Realm,在我的应用程序中,我有一个自定义的RealmDatabase类。它为我初始化领域数据库 public class RealmDatabase: Database { let realm: Realm // // I also provide a shared() singleton // public init(fileURL: URL) { let config = Realm.Configuration(fileURL: fileU

在我的应用程序中,我有一个自定义的
RealmDatabase
类。它为我初始化领域数据库

public class RealmDatabase: Database {
    let realm: Realm

    //
    // I also provide a shared() singleton
    //

    public init(fileURL: URL) {
        let config = Realm.Configuration(fileURL: fileURL)
        Realm.Configuration.defaultConfiguration = config
        realm = try! Realm()
    }

    public func observe<T>(_ block: @escaping ((T) -> Void), for object: T.Type) where T : Storable {
        realm.objects(object).observe { (changes) in
            print("Changes: ", changes)
        }
    }
}
现在,在我的
AppDelegate
中,我执行以下操作:

let database = RealmDatabase.shared()
let syncEngine = SyncEngine(database: database)
syncEngine.start()

但问题是,我的观察者从未被激发,而且
print(“Changes:,Changes)
从未打印到控制台。不过,我不知道我做错了什么。有什么想法吗?

您在创建观察结果的过程中放弃了它。要解决此问题,您需要保留
observe
返回的
NotificationToken

var token: NotificationToken? 

func start() {
    token = database.observe { changes in ... }
}

这确实是问题所在。谢谢
var token: NotificationToken? 

func start() {
    token = database.observe { changes in ... }
}