文档说observeEventType:withBlock如果您不再需要它,您需要调用以删除观察者.
我见过它被称为内容的样本ViewDidDisAppear.我也发现了一些称为此方法的Obj-C代码deinit,这在Swift中是不必要的.
但是,在我的简单应用程序中,只要我在应用程序中,就希望数据同步.如果是这种情况,我是否必须打电话observeEventType:withBlock?
我检查了Firebase网站上的Chat-Swift示例代码,但没有找到observeEventType:withBlock.
这是否意味着不打电话observeEventType:withBlock:.如果我希望观察者在应用程序使用时打开?
谢谢.
UPDATE
感谢Jay和David.我认为在ViewWillAppear中观察并在ViewDidDisappear中删除它是有意义的.
但是,我使用observeEventType来监视节点的任何值更改,如果有任何更新UI.如果我把它放在ViewWillAppear中:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
ref.observeEventType(.Value, withBlock: { snap in {
// **update UI if there is any Value change**
})
}
Run Code Online (Sandbox Code Playgroud)
将其放入的问题viewWillAppear是,无论值是否发生变化,每次出现视图时都会调用它.因此,每次返回视图时都会下载快照并刷新我的UI.这会适得其反.
我也试过ChildAdded/ ChildRemoved,但它只返回最后一个节点,而不是我的ref的路径:
例如,如果我添加到ref/child1/child2/child3/value,ChildAdded则只返回child3/value.
所以,如果我必须观察价值,似乎把它放进去ViewDidLoad更好?通过这种方式,它可以在加载视图时获取一次快照,并且只要有更改就会重复,但只是因为视图出现而无法获取快照.
我正在构建一个简单的iOS应用程序,使用REST API与Firebase对话.
基本上,我NSURLSession.sharedSession().dataTaskWithRequest用来连接
该应用程序在iOS 8中运行良好.我能够通过GET/PUT/PATCH/DELETE来操作我的数据.但是由于iOS 9引入了ATS,我现在有了https错误:
NSURLSession/NSURLConnection HTTP加载失败
(kCFStreamErrorDomainSSL,CFNetwork SSLHandshake失败)
我完全了解Info.plist中的变通方法解决方案. 但是,我想在iOS 9中使用新的安全功能.
我检查了Firebase连接安全性(通过点击Chrome的绿色锁定按钮),它似乎与Apple的ATS要求兼容.
我的错误是因为我使用NSURLSession的方式?或者是因为Firebase安全设置?
PS:我测试了https://firebase.com并且NSURLSession连接了精细的w/o错误.我的应用程序也很简单,我不需要身份验证.
谢谢您的帮助.