我的應用程序使用Swift
3.1,Realm
2.7.0作爲數據庫並具有使用DispatchGroup
來控制我確定進程的流的後臺服務。第一DispatchGroup和Realm
第一件事,在我ViewController
我做了Realm
的通知系統的實現,曾被稱作NotificationToken
,使用方法addNotificationBlock
來檢測確定的對象數據的任何改變。
在此之前,一切都很好。該塊在所有更改中調用。
我已經實現了一個使用一堆DispatchQueue
和DispatchGroup
一個新的進程,這裏有一個例子:
該代碼僅僅是一個樣本!不要這樣做!
DispatchQueue.global(qos: .background).async {
autoreleasepool {
//Other stuff...
let id = 1337
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
DispatchQueue(label: "Process").sync {
let foo = Bar()
foo.progress = { newValueInt in
let realm = try! Realm()
try! realm.write {
realm
.object(ofType: Some.self, forPrimaryKey: id)
.someValue = newValueInt
}
}
foo.completed = {
dispatchGroup.leave()
}
foo.doSomethingAsync()
}
dispatchGroup.notify(queue: DispatchQueue.global(qos: .background)) {
//Process completed.
}
}
}
的問題是:該addNotificationBlock
不被調用和其通知塊上添加的對象不該方法Bar.progress
運行時更新。
謝謝!
這似乎....錯了。 – EpicPandaForce
告訴我爲什麼。給我理由。 –
交易完成後,Realm是否有任何方式通知所有tokenBlocks?我不這麼認爲。 –