Попытка отобразить имена моих пользователей из FirebaseStorage - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь отобразить имя пользователя моего пользователя из firebase, однако эта строка кода:

self.userNameOut.text! = DataSnapshot.value!["username"] as? String

возвращает ошибку:

Cannot subscript a value of incorrect or ambiguous type

Кто-нибудь знает, почему я получаю эту ошибку?

Любая помощь будет принята с благодарностью!

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

var loggedInUser = AnyObject?.none
var databaseRef = DatabaseReference()
var storageRef = StorageReference()````

        self.loggedInUser = Auth.auth().currentUser

    self.databaseRef.child("user_profiles").child(self.loggedInUser!.uid).observeSingleEvent(of: .value) { (snapshot:DataSnapshot) in

        if snapshot.exists() {
            if let userDict = snapshot.valueInExportFormat() as? Dictionary<String, AnyObject> {
                print(userDict["username"] as! String )
                self.userNameOut.text =  userDict["username"] as? String ?? ""
            }
        }

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Используйте следующий код, чтобы получить username, надеюсь, он вам поможет.

if snapshot.exists() {
     if let userDict = snapshot.valueInExportFormat() as? Dictionary<String, AnyObject> {
          print(userDict["username"] as? String )
          self.userNameOut.text =  userDict["username"] as? String ?? ""
     }
} else {
    //Data not found
}
0 голосов
/ 22 мая 2019

Не уверен, почему вы используете DataSnapshot.value, но, предполагая, что значение не nil, вы можете получить к нему доступ таким образом, как Firebase Database использует формат дерева JSON (сочетание ключ / значение), это означает, что вам нужно ввести приведение snapshot.value к dictionary:

if let fbDictionary = DataSnapshot.value as? [String: AnyObject] {  
    let username = fbDictionary["username"] as! String 
} else {
    print("Error retrieving data, value nil?") 
}

Обычно вы хотите либо прослушать изменения в базе данных , либо получить одного конкретного пользователя, зная его идентификатор . В обоих случаях, когда у вас есть действительный файл базы данных firebase, вы можете получить доступ к полю в нем, например username, обратившись к нему в качестве словаря, как в примере выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...