2017-01-30 4 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でFirebase Databaseリファレンスを割り当てる方法を教えできればいいだろう、Xcodeの8

Firebaseセットアップは、この時点までは成功しました。エラーはなく、すべてがポッドファイルなどで設定されました...

ありがとうございます。

質問更新のviewDidLoadで参照を作成するためにあなたの先端のための

ありがとう@ ronatory。それはうまくいった。

私は今、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) 
      } 
     } 

    } 

私はそれはそれは、これらの変数を知っていないこと*場所でエラーを示しますので、そこのスコープに問題があると思います。

誰かが私を助けることができれば非常にいいです。ありがとう。

ティメオ

更新

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

+1

たとえば、 'viewDidLoad'のようなメソッドに' ref = FIRDatabase.database()。reference() 'を入れる必要があります。確かにクラスのスコープに割り当てようとしているのでエラーが発生します – ronatory

+0

@チェックの更新 –

+0

はあなたの更新された質問に私の答えを追加しました – ronatory

答えて

1

問題:

あなたが作成および初期化ref定数をあなたのviewDidLoad()にしているため、それは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

私の失敗がうまくいって、私の答えが更新されました@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

check pls –

関連する問題