2017-03-13 2 views
0

は、私はこの機能を使用していない:これは私の構造はFirebaseは時々クラッシュしているが、私は、配列を取得していた場合、必ず

enter image description here

です:これは私の誤りである

self.gameRef!.observeSingleEvent(of: .value, with: { (snapshot) in 
        let value = snapshot.value as? NSDictionary 
        let seeds = value?["seed"] as! [Int] 
} 

を:

enter image description here

ただし、moそれが働いている時間のst。時々、私はこのクラッシュを得る。なぜ私は考えていない。ご協力ありがとうございました。

+0

を見てみたいことがあります

if all of the keys are integers, and more than half of the keys between 0 and the maximum key in the object have non-empty values, then Firebase will render it as an array

の代わりに:あなたはので、キーのようなint型を使用しないでくださいオプションのアンラッピング。さて、なぜあなたの配列が何度かInt配列でないのと同じ理由で、なぜそれが認識されないのかというさらなる情報が必要な別の質問です。 – Prientus

+0

そうです、それは変です...シードはクエリを実行する前に常に利用可能です。 – Petravd1994

+0

それが何を含むかを見るためにクラッシュしたときに 'value'を印刷しようとしましたか?あなたは例外ブレークポイントをオンにすることができ、クラッシュの直前にその行で一時停止すると 'value'が出力され、そのポイントに何が含まれているのかを見ることができます。 – Prientus

答えて

0

私はこの問題は、あなたがFirebaseは、配列のようにそれらを扱い、シーケンシャルな方法でint型を使用する場合ということです

self.gameRef!.observeSingleEvent(of: .value, with: { (snapshot) in 

      if let value = snapshot.value as? [String:[Int]], let seeds = value["seed"]{ 
      //continue 
} 
} 
0

スナップショット値をアンラップしようとするだろう。そしてあなたはこれを辞書のようにキャストしています。あなたは[INT]にアンラップ力ですので、あなたが最も可能性のクラッシュを得ている理由はthis answer too.

関連する問題