2016-10-03 1 views
0

Я пытаюсь интегрировать Firebase и AutoCompleteTextField в Swift, так что у меня есть автозаполнение в текстовом поле. У меня возникла проблема с преобразованием словаря в массив, поэтому я могу установить его в 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

, так что вы видите, если вы печатаете эту строку печати (места) –

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^