2

Firebase から読み取り、取得した値にラベルを設定しようとしています

これは、ViewController クラスの上部がどのように見えるかです。

import UIKit
import Firebase

class ProfileTabViewController: UIViewController {

//MARK: Properties

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

私は Firebase Reference を持っています

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

原因:

致命的なエラー: オプション値のラップ解除中に予期せず nil が見つかりました (lldb)

私はもう試した

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 name = snap.value as? String{   
         self.nameLabel.text = name
  }

また、コンセントが正しく接続されていることを確認してください。そうしないと、クラッシュしました..

于 2016-04-12T05:39:31.903 に答える