我有一個應用程序,我想連接到兩個不同的Firebase數據庫。 我有兩個viewControllers是單獨能夠連接到每個數據庫,但如果我連接到第一個數據庫,然後連接到另一個 - 應用程序崩潰Firebase/Swift兩個數據庫連接
我有2個info.plist文件和2個ViewControllers連接按鈕/繼續。
這是我第一次的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)
}
}
我可以連接到火力點 - 當我加載應用程序,它會發生。
二的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)
}
}
如果我outcomment在前面的viewController數據庫調用,該控制器還能夠連接到火力/數據庫和讀取數據,但如果我不outcomment這個數據,它會在第一個數據庫中設置值,當我按下按鈕轉到第二個viewController時,應用程序崩潰。
我已將2個plist文件的targetMemebeship設置爲相同的應用程序名稱。
錯誤消息說該應用程序已配置 - 但我認爲ref.removeObserver(句柄)在ViewDidDissapear()將斷開與數據庫的連接,連接到其他數據庫之前 - 那麼是什麼錯誤??
起坐:我忘了把句柄值如此... var句柄:UInt = 0 但該應用程序崩潰與相同的消息 –