2

我正在尝试从 Firebase 读取并将标签设置为我得到的值

这是我的 ViewController 类的顶部的样子:

import UIKit
import Firebase

class ProfileTabViewController: UIViewController {

//MARK: Properties

@IBOutlet weak var nameLabel: UILabel!
var userName = "userName"

我有一个 Firebase 参考资料

var currentUserName = Firebase(url: "https://buzzmovieios.firebaseio.com/users/884962b7-9fd8-49db-b172-1ad7cb1414f4/Name")

随机字符串是 Firebase 返回的 uid。

我试图在 viewDidAppear() 方法中获取用户名:

override func viewDidAppear(animated: Bool) {

    print(currentUserName)
    currentUserName.observeEventType(.Value) { (snap: FDataSnapshot!) in
        let name = snap.value as! String
        self.nameLabel.text = name
    }

}

let name 行工作正常。

print(name)

这一行:

self.nameLabel.text = name

原因:

致命错误:在展开可选值 (lldb) 时意外发现 nil

我试过了

let name = snap.value as? String

它不起作用。

这就是我的 Firebase 的样子:

火力基地

buzzmovieios
    users
      --884962b7-9fd8-49db-b172-1ad7cb1414f4
               Major: CS
               Name: Shawn
      --8880069d-1944-493d-8246-8119fc4bfc81

等等。

如何避免此展开错误?谢谢!

注意:我正在运行 XCode 7.3

4

1 回答 1

6

请使用 if let 来解开可选选项,例如

  if let name = snap.value as? String{   
         self.nameLabel.text = name
  }

并检查您的插座是否正确连接,否则它会崩溃..

于 2016-04-12T05:39:31.903 回答