AutoCompleteTextField和Firebase

问题描述:

我想在Swift中集成Firebase和AutoCompleteTextField,以便在textField中自动完成。我在尝试将字典转换为数组时遇到问题,因此我可以将它设置为autoCompleteTextField.autoCompleteStrings。这是我的代码。AutoCompleteTextField和Firebase

func handleTextFieldInterfaces() { 

    let ref = FIRDatabase.database().reference().child("Airport") 
     ref.observeEventType(.Value, withBlock: { (snapshot) in 
    self.autoCompleteTextField.onTextChange = {[weak self] text in 

      if !text.isEmpty { 
      var fbosStuff = [String]() 
       if let snaps = snapshot.value as? [[String: AnyObject]] { 
       for places in snaps { 
        print(places) 
        let names = places["code"] as? String 
        fbosStuff.append(names!) 
       } 
       self!.autoCompleteTextField.autoCompleteStrings = fbosStuff 

       } 
      } 

     } 
    }) 
} 

和我试图放入文本框的Firebase响应是。

Snap (Airport) { 
"Long Beach" =  { 
    FBOs =   { 
     Atlantic =    { 
      100LL = "7.0"; 
      freq = "120.1"; 
      fullname = "Atlantic, Long Beach, KLGB"; 
      "jet-A" = "5.5"; 
      "phone number" = "(800) 554-3591"; 
     }; 
     Signature =    { 
      100ll = "7.0"; 
      email = "[email protected]"; 
      freq = "120.1"; 
      fullname = "Signature, Long Beach, KLGB"; 
      "jet-a" = "5.5"; 
      phonenumber = "(800) 554-3591"; 
     }; 
    }; 
    code = KLGB; 
    fieldname = Daughtery; 
    location = "Long Beach, California, USA"; 
}; 
"Santa Monica" =  { 
    FBOs =   { 
     "American Flyers" =    { 
      100ll = "5.38"; 
      freq = "123.3"; 
      fullname = "American Flyers, Santa Monica, KSMO"; 
      phonenumber = "(310) 390-2099"; 
     }; 
     Atlantic =    { 
      100ll = "7.79"; 
      freq = "122.95"; 
      fullname = "Atlantic, Santa Monica, KSMO"; 
      "jet-a" = "7.19"; 
      phonenumber = "(310) 396-6770"; 
     }; 
    }; 
    code = KSMO; 
    fieldname = "Santa Monica Muni Airport"; 
    location = "Santa Monica, California, USA"; 
}; 

}

+0

如果你想获得价值“代码”你需要更深入,你可以看到它是深入你的回应,阅读有关映射JSON。尝试一步一步去检查如何打印你需要的东西 –

+0

我试图把“圣莫尼卡”和“长滩”放到一个数组中 – Court

+0

所以如果你打印这行打印(地方) –

尝试: -

夫特2

for places in snaps { 

    print(places.0) // Will give you the key 
    let names = places["code"] as? String 
    fbosStuff.append(names!) 

} 

夫特3

+0

这给我2键。但我需要将密钥放入数组中。他们都一起打印出来。 – Court

+0

你是什么意思一起打印? – Dravidian