Dan*_*uca 7 cocoa realm ios swift
我正在尝试使用Realm数据库在OS X中编写应用程序.在我的程序中,我需要等待Realm写入完成然后调用一个新的veiwcontroller.经过大量研究后,似乎使用Realm的内置通知中心是合适的.根据Realm文档,格式应该像这样工作
let token = realm.addNotificationBlock { notification, realm in
viewController.updateUI()
}
Run Code Online (Sandbox Code Playgroud)
我知道这是一个快速关闭,但我不知道如何使用它.如果我将代码更改为此
let token = realm.addNotificationBlock { notification, realm in
println("The realm is complete")
}
Run Code Online (Sandbox Code Playgroud)
写完成后会打印到我的调试屏幕吗?或者更简单地说,如何在收到通知后才执行某些代码?
如果我将上面的代码放在我的应用程序中,我在调试屏幕中看不到我的所有内容,我看到如下:
2015-07-31 16:08:17.138 Therapy Invoice [27979:2208171] RLMNotificationToken在未取消注册通知的情况下发布.您必须保持从addNotificationBlock返回的RLMNotificationToken并调用removeNotification:当您不再希望接收RLMRealm通知时.
Ida*_*dan 17
来自Realm最新文档(3.0.1):
添加notificationToken.invalidate()以从通知中取消注册.
详细地:
声明notificationToken为类变量
var notificationToken: NotificationToken?
Run Code Online (Sandbox Code Playgroud)设置notificationToken在viewDidLoad()
notificationToken = realm.observe { [unowned self] note, realm in
self.tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)从通知中取消注册 viewWillDisappear(animated: Bool)
notificationToken?.invalidate()
Run Code Online (Sandbox Code Playgroud)编辑笔记:
notificationToken.stop() 已弃用.realm.addNotificationBlock... 将导致以下错误:
"Realm"类型的值没有成员'addNotificationBlock'
制作notificationToken一个伊娃:
var notificationToken: NotificationToken?
deinit{
//In latest Realm versions you just need to use this one-liner
notificationToken?.stop()
/* Previously, it was needed to do this way
let realm = Realm()
if let notificationToken = notificationToken{
realm.removeNotification(notificationToken)
}
*/
}
override func viewDidLoad() {
super.viewDidLoad()
let realm = Realm()
notificationToken = realm.addNotificationBlock { [unowned self] note, realm in
self.tableView.reloadData()
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8131 次 |
| 最近记录: |