如何避免 Firebase 致命错误:在解开 Optional 值时意外发现 nil?

Nis*_*Roy 2 ios firebase swift forced-unwrapping xcode7.3

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

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

import UIKit
import Firebase

class ProfileTabViewController: UIViewController {

//MARK: Properties

@IBOutlet weak var nameLabel: UILabel!
var userName = "userName"
Run Code Online (Sandbox Code Playgroud)

我有一个 Firebase 参考

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

随机字符串是 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
    }

}
Run Code Online (Sandbox Code Playgroud)

let name 行工作正常。

print(name)
Run Code Online (Sandbox Code Playgroud)

这一行:

self.nameLabel.text = name
Run Code Online (Sandbox Code Playgroud)

原因:

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

我试过了

let name = snap.value as? String
Run Code Online (Sandbox Code Playgroud)

它不起作用。

这是我的 Firebase 的样子:

火库

buzzmovieios
    users
      --884962b7-9fd8-49db-b172-1ad7cb1414f4
               Major: CS
               Name: Shawn
      --8880069d-1944-493d-8246-8119fc4bfc81
Run Code Online (Sandbox Code Playgroud)

等等。

如何避免这种解包错误?谢谢!

注意:我正在运行 XCode 7.3

EI *_*2.0 6

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

  if let name = snap.value as? String{   
         self.nameLabel.text = name
  }
Run Code Online (Sandbox Code Playgroud)

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