【问题标题】:Trying to display Usernames of my Users from FirebaseStorage尝试从 FirebaseStorage 显示我的用户的用户名
【发布时间】:2019-05-22 05:47:25
【问题描述】:

我正在尝试从 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 ?? ""
            }
        }

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database


    【解决方案1】:

    使用以下代码获取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
    }
    

    【讨论】:

    • 一如既往地感谢@AtulParmar 的帮助!您对如何将其连接到 ui 标签有任何想法吗?特别是我试图连接到@IBOutlet weak var userNameOut: UILabel!
    • 查看更新的答案,只需将文本分配给您的 userNameOut UILabel
    • 感谢阿图尔的所有帮助!我认为我与数据库的连接是错误的?如果您不介意,您能在我的连接中看到任何错误吗? (见上面的编辑)
    【解决方案2】:

    不确定您为什么使用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?") 
    }
    

    通常您希望listen to changes in the Databasefetch one specific user knowing its ID。在这两种情况下,一旦您拥有有效的 firebase 数据快照,您就可以通过像上面示例一样将其作为字典访问来访问其中的字段,例如 username

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      相关资源
      最近更新 更多