2017-01-30 4 views
0

У меня возникла проблема создать правильную ссылку Firebase для моего приложения iOS. У меня уже есть проблемы с этим целый день, и я просто не могу найти, как это исправить.Создать ссылку на 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() 
    } 

} 

Было бы хорошо, если бы кто-то может сказать мне, как правильно назначить Firebase справочной базы данных в ИО 10, Xcode 8.

Firebase Установка не была успешной до этого момента. Ошибок нет, и все было настроено с помощью podfile и т. Д.

ThankYou.

Вопрос Update

ThankYou @ ronatory для наконечника, чтобы создать ссылку в viewDidload. Это сработало.

Теперь я могу записать в Firebase из функции viewDidLoad. Но у меня все еще есть проблемы, когда я хочу назначить дополнительные пользовательские интерфейсы для записи данных в базу данных.

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) 
      } 
     } 

    } 

Я думаю, что есть проблема с областями там, потому что он показывает ошибку в месте *, что он не знает, что эти переменные.

Было бы очень приятно, если кто-то может мне помочь в этом. Благодарю.

Тимео

Update

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

+1

Вам нужно положить 'исх = FIRDatabase.database() ссылка()' в метод, как 'viewDidLoad', например.. Уверен, что он дает ошибку прямо сейчас, потому что вы пытаетесь присвоить ее в области видимости класса – ronatory

+0

Обновление проверки @ronatory –

+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

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:

pod 'Firebase/Database' 
+0

check Обновить PLS –

Смежные вопросы