2つの異なるfirebaseデータベースに接続したいアプリケーションがあります。 それぞれのデータベースに個別に接続できる2つのビューコントローラーがありますが、最初のデータベースに接続して後で別のアプリケーションに接続するとクラッシュするFirebase/Swift 2つのデータベース接続
2つのinfo.plistファイルと2つのViewControllerが接続されていますボタン/セグ。
これが私の最初のViewController
import UIKit
import Firebase
class ViewController: UIViewController {
var ref: DatabaseReference!
var handle:UInt!
override func viewDidLoad() {
super.viewDidLoad()
let filePath = Bundle.main.path(forResource: "GoogleService-Info-anden", ofType: "plist")
guard let fileopts = FirebaseOptions.init(contentsOfFile: filePath!)
else { assert(false, "Couldn't load config file") }
FirebaseApp.configure(options: fileopts)
ref = Database.database().reference()
ref?.child("UserVandreture").child("navn").setValue("Inger")
}
override func viewDidDisappear(_ animated: Bool) {
ref.removeObserver(withHandle: handle)
}
}
である私はfirebaseに接続することができます - 私はアプリをロードするときに起こるいます。
第二のViewController
import UIKit
import Firebase
class AndenDBViewController: UIViewController {
var ref: DatabaseReference!
var handle:UInt!
let fileName = "Bambusstien"
override func viewDidLoad() {
super.viewDidLoad()
let filePath = Bundle.main.path(forResource: "GoogleService-Info", ofType: "plist")
guard let fileopts = FirebaseOptions.init(contentsOfFile: filePath!)
else { assert(false, "Couldn't load config file") }
FirebaseApp.configure(options: fileopts)
ref = Database.database().reference()
response()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//kan læse navn,type, længde og link
func response() {
ref?.child("Vandreture").child(fileName).observe(.value, with: { (snapshot) in
let dict = snapshot.value as? [String: AnyObject]
let navn = dict!["navn"] as? String
print(navn as Any)
let type = dict!["type"] as? String
print(type as Any)
let Længde = dict!["length"] as? String
print(Længde as Any)
let link = dict!["link"] as? String
print(link as Any)
})
}
override func viewDidDisappear(_ animated: Bool) {
ref.removeObserver(withHandle: handle)
}
}
私は、以前のViewControllerでデータベース呼び出しをoutcomment場合は、このコントローラはまた、firebase /データベースに接続し、データを読み取ることができますが、私はこのデータをoutcommentていない場合最初のデータベースの値を設定し、ボタンを押して2番目のviewControllerに移動すると、アプリケーションがクラッシュします。
私は2つのplistファイルのtargetMemebeshipを同じアプリケーション名に設定しました。
エラーメッセージは、アプリがすでに設定されていることを述べている - だから何がある - 私はViewDidDissapearでref.removeObserver(ハンドル)()他のデータベースに接続する前に、データベースへの接続を切断するだろうと思ったが違う??
アップ:私が扱う設定を忘れてしまったようなもの - ユーザーがデータベースの特定の部分への書き込みアクセス、および唯一の他の部分への読み取りアクセス権を持つができるようになり value so ... varハンドル:UInt = 0 しかし、同じメッセージでアプリがクラッシュする –