假设你有一个这样做的标签。
Ok.
假设你使用MVVM https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel图案也。
Ok.
ViewController 有标签和“观察”(*)ViewModel 属性“进度”
ViewModel 具有属性“进度”
class ViewModel: NSObject {
dynamic var progress: Int = 0
func save(object object: Object) {
do {
let realm = try Realm()
try realm.write({ () -> Void in
// Here your operations on DB
self.progress += 1
})
} catch let error as NSError {
ERLog(what: error)
}
}
}
这样,当“进度”发生变化时,viewController 就会收到通知,并且您可以更新 UI。
你的 VC 应该有一个像这样的方法,例如由 viewDidLoad 调用:
private func setupObservers() {
RACObserve(self.viewModel, keyPath: "progress").subscribeNext { (next: AnyObject!) -> Void in
if let newProgress = next as? Int {
// Here update label
}
}
}
其中 RACObserve 是一个全局函数:
import Foundation
import ReactiveCocoa
func RACObserve(target: NSObject!, keyPath: String) -> RACSignal {
return target.rac_valuesForKeyPath(keyPath, observer: target)
}
(*)您可以使用活性可可 https://github.com/yusefnapora/ReactiveCocoa/tree/de3c9a76666b1bf847f3f50df6a3791035defd9a例如。