2017-01-30 148 views
0

我目前遇到问题,无法为我的iOS应用创建适当的Firebase参考。我一整天都遇到麻烦,无法找到解决方法。创建无错误的Firebase参考

import UIKit 
import Firebase 
import FirebaseDatabase 

class ViewController: UIViewController { 

    @IBOutlet var remoteSwitch: UISwitch! 
    @IBOutlet var label: UILabel! 

    var ref: FIRDatabaseReference! 

    //That's where i get the Error ! --> Expected declaration 
    ref = FIRDatabase.database().reference() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

} 

将是很好,如果有人能告诉我如何正确地分配在iOS的10火力地堡数据库参考,Xcode中8

火力地堡设置是成功的,直到这一点。没有错误和一切与podfile等设置...

ThankYou。

问题更新

三江源@ ronatory为你的提示创建于viewDidLoad中参考。这工作。

我现在可以从viewDidLoad函数写入Firebase。 但我仍然有问题,当我想分配额外的UI开关将数据写入数据库。

import UIKit 
    import Firebase 
    import FirebaseDatabase 

    class ViewController: UIViewController { 

     @IBOutlet var remoteSwitch: UISwitch! 
     @IBOutlet var label: UILabel! 

     override func viewDidLoad() { 
      super.viewDidLoad() 
      let ref = FIRDatabase.database().reference() 
      ref.child("timeo").setValue(true) 
     } 

     override func didReceiveMemoryWarning() { 
      super.didReceiveMemoryWarning() 
      // Dispose of any resources that can be recreated. 
     } 

     @IBAction func switched(_ sender: UISwitch) { 
      if remoteSwitch.isOn == true { 
       label.text = "ON" 
//location * 
       ref.child("timeo").setValue(true) 
      } 
      else { 
       label.text = "OFF" 
//location * 
       ref.child("timeo").setValue(false) 
      } 
     } 

    } 

我认为那里的范围有一个问题,因为它显示位置*的错误,它不知道这些变量。

如果有人能帮助我,那将会非常好。谢谢。

Timeo酒店

更新

That's the Error I get when declaring the Reference in the

+1

例如,您需要在类似'viewDidLoad'的方法中放置'ref = FIRDatabase.database()。reference()'。确定它现在给出一个错误,因为你试图在类范围内分配它 – ronatory

+0

@ronies check update –

+0

添加了我对你更新的问题的答案 – ronatory

回答

1

问题:

创建并在viewDidLoad()初始化ref常数,因为它只是一个viewDidLoad()范围内使用。

解决方案:

要同时访问它内部的其他方法,比如你switched(_:)方法,你需要创建一个类型的FIRDatabaseReference的引用,那么您可以在viewDidLoad()初始化它能够后设置你的价值观(提示在代码注释中):

import UIKit 
import Firebase 
import FirebaseDatabase 

class ViewController: UIViewController { 

    @IBOutlet var remoteSwitch: UISwitch! 
    @IBOutlet var label: UILabel! 

    // create the reference here 
    var ref: FIRDatabaseReference! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // initialize your reference 
     ref = FIRDatabase.database().reference() 
     ref.child("timeo").setValue(true) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func switched(_ sender: UISwitch) { 
     if remoteSwitch.isOn == true { 
      label.text = "ON" 
      // now you should be able to access your reference here 
      ref.child("timeo").setValue(true) 
     } 
     else { 
      label.text = "OFF" 
      // now you should be able to access your reference also here 
      ref.child("timeo").setValue(false) 
     } 
    } 

} 
+0

检查更新的问题,以获得我现在得到的错误。 –

+1

sry我的错,更新了我的答案@TimeoSchmidt – ronatory

+0

非常感谢你,你帮了我很多。挣扎机智,整天。干杯! –

1

你可以把它直接像这样:

import UIKit 
import Firebase 
import FirebaseDatabase 

class ViewController: UIViewController { 

    @IBOutlet var remoteSwitch: UISwitch! 
    @IBOutlet var label: UILabel! 

    var ref = FIRDatabase.database().reference() 


    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 



} 

另外,还要确保你已经安装了波德:

pod 'Firebase/Database' 
+0

检查更新请求 –