2016-03-27 3 views
4

私はこれのために私の髪を引っ張ってきました。関連するインシデントと複数のチュートリアルを含むすべてのページに移動する私のコードには何も問題はありませんが、どういうわけか、値(動作する)を印刷したり、割り当てたりすると失敗しません。 NSArrayは空の配列を返します。速いFirebaseとobserveEventTypeのあいまいな使用

snapshot.valueの印刷は

(friend1, 
    friend2, 
    friend3 
) 

私が試したsnapshot.value.values ...ないサイコロを示しています。 私はアンラップで遊んでみました...ダイスはありません。

friendsList = [String]() 

    ref.observeSingleEventOfType(.Value) { (snapshot) -> Void in 
     if snapshot.value is NSNull { 

     } else { 
      for child in snapshot { 
       self.friendsList.append(child.value) 
      } 
     } 
    } 

再び私にあいまいなものを与える: 、これが私の最後の試みです。

答えて

12

ただ、いくつかのコーディングエラー

削除:(スナップショット) - >ボイド

変更:snapshot.childrenは

であるのに対し、スナップショットとスナップショットで子供は、シーケンスではありません私はあなたを想定します友人の名前を文字列として保存したい場合はの名前があなたの構造の鍵です。だから、

let name = child.value["name"] as? String 
friendsList.append(name!) 

self.friendsList.append(child.value)を変更ここで修正されたコードです:私のために

var friendsList = [String]() 

ref.observeSingleEventOfType(.Value, withBlock: { snapshot in 

    if snapshot.value is NSNull { 

    } else { 
     for child in snapshot.children { 
      let name = child.value["name"] as? String 
      friendsList.append(name!) 
     } 
     print("\(friendsList)") 
    } 
}) 
+0

は、構造体のキーは、配列としてsetValueを実行すると、デフォルトで0,1,2、...となります。それぞれの子供は一意のキーを持っており、私はすべての値をループしたい。どうやってやるの? – Aylii

+0

FirebaseはArrayをサポートしていますが、あなたの構造に他のより良い方法があるので、一般的に推奨されていません(uidまたはchildByAutoIdが勝者です)。それらの使用は非常に状況がよく、コーナーに簡単にコーディングすることができます。 0,1,2はキーであり、それらを反復処理したり、それらを直接Arrayに配置したり、それを反復処理することができます。しかし、私が言及したように、他の構造を調べるべきです。アレイの投稿を個別に扱うことに関して質問がある場合。私の答えが助けられたら、それを受け入れてください! – Jay

+0

申し訳ありませんが、実際には機能しませんでした。私はあなたに何をしたかを教えてあげます。 AnyObjectからアンラップされたときにNSArrayになる型を知るためにsnapshot.value!.dynamicTypeを出力しました。私はその後ダウンキャスト! [文字列]それはその後働いた。私は本当に助けに時間を割いていただきありがとうございます:) – Aylii

0
ref.observeSingleEvent(of: .value, with: { (snapshot) -> Void in 

    }) 

仕事、Xcodeの8.3.2まあ

関連する問題