Присвойте Firebase снимок переменной - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь сохранить информацию, которую я читаю, из моей базы данных Firebase в переменную. Вот как я читаю мою информацию:

dbHandle = dbReference?.child("users").child(userEmail!).child("state").observe(.value, with: { (snapshot) in
        if let userState = (snapshot.value as? String){
            var taxRate = self.stateAbbreviations[userState]!
            print(taxRate)
        }

    })

Теперь у меня вопрос, как сделать userState & taxRate видимым вне этого вызова?

Я попытался объявить userState вне вызова, инициализировать его внутри и снова сослаться на него, но он не работает. Например:

var userState:String? = ""
dbHandle = dbReference?.child("users").child(userEmail!).child("state").observe(.value, with: { (snapshot) in
        let userState = (snapshot.value as? String)
        var taxRate = self.stateAbbreviations[userState]!
        print(taxRate)
    })
print(userState)

Но это только печатает ""

Любой совет ??

1 Ответ

0 голосов
/ 07 мая 2018

Вы инициализируете var userState как пустую строку, и ваш отпечаток вне завершения извлекает его значение по умолчанию, в вашем завершении firebase вы инициализируете другую переменную userState с let userState =

Если вы хотите использовать userState и taxRate вне вызова, вы можете сделать это следующим образом, например:

// Create your variables 
var userState: String = “”

//Create a func with completion handler
func getUserStateAndTaxRate(completion:((String,String) -> Void)?) {
    dbHandle = dbReference?.child("users").child(userEmail!).child("state").observe(.value, with: { (snapshot) in
        let userState = (snapshot.value as? String)
        var taxRate = self.stateAbbreviations[userState]!
        print(taxRate)
        completion?(userState, taxRate)
    })
}

//Then call it
getUserStateAndTaxRate { (userState, taxRate) in 
    // userState and taxRate are now available 
    self.userState = userState 
    self.taxRate = taxRate 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...