2017-03-04 71 views
1

我有這樣的代碼:檢索詮釋在火力地堡數據庫與斯威夫特3

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

     print(snapshot) 

     if let dict = snapshot.value as? [Int : Bool] { 
      print(dict) 
     } 
    }) 

,打印此快照:

Snap (availability) { 
    1 = 1; 
    2 = 1; 
    3 = 1; 
    4 = 1; 
    5 = 1; 
    6 = 0; 
    7 = 0; 
} 

我的問題是,我Dictionnarydict未初始化,因爲Int值1,2,...,6,7; Firebase可能不會將它們作爲Int。我也嘗試使用dict作爲[String : Bool]來檢索這些值。不工作。 [NSNumber : Bool]

我的問題:如何檢索這些值,考慮到他們的子女名字是Ints?

+0

可能它們是'NSNumber'的實例 –

+0

順便說一句:你的例子和替代例子包含'[String:Bool]'。 –

+0

對不起,謝謝你的隊友!順便說一下,'NSNumber'不起作用! –

回答

1

問題是,當您按順序使用Ints時,Firebase將它們視爲數組。 您應該避免使用int像鑰匙,這是因爲:

如果所有的按鍵都是整數,且大於0和對象的最大密鑰具有非空值之間的鍵的一半,那麼火力地堡將

將其渲染爲一個數組。

Here here more details about the issue! 還有一些來自Firebase博客的best practices

+0

謝謝隊友我會避免這種情況。 ;) –

+0

但是可能作爲價值嗎? –

+0

你是什麼意思? – i6x86