2016-05-02 4 views
2
var dictionary: Dictionary<String, AnyObject> = ["title" : "Berlin", 
"description" : "Berlin square", 
"createdBy": "Mathias", 
"coordinates": ["fddfhsg": ["latitude": 56.34, "longitude": 53.44]]] 

dictionary["coordinates"]Как получить значения без ключа словаря?

мне нужно получить значения широты и долготы, но я не ключ («fddfhsg») словаря. Этот ключ генерируется базой данных Firebase.

Спасибо за помощь.

+0

Я заметил, что вы включили тэг firebase в свой вопрос, но не упоминается, как данные извлекаются и словарь заполняется? Это за счет запуска запроса firebase и создания словаря из моментального снимка? – Jay

ответ

7

Вы можете получить эти значения, не зная этого ключа: введите «координаты» в нужный тип словаря, затем используйте необязательную привязку и свойство values.

Пример:

if let dict = dictionary["coordinates"] as? [String:[String:Double]], 
     content = dict.values.first, 
     latitude = content["latitude"], 
     longitude = content["longitude"] { 
    print(latitude) 
    print(longitude) 
} 

56,34
53,44


В качестве обновления после ваших комментариев: все, что вам нужно сделать сейчас, чтобы адаптироваться к различным словарным структурам.

Для вашего второго словаря, посмотрите, как она структурирована:

for (key, value) in dictionary2 { 
    print(key) 
    print(value) 
    print("---") 
} 

Значения вы ищете не на том же уровне, чем другие, мы схватили ранее.

Адаптировать решение, которое я уже дал: это только вопрос иерархии в словаре. В dictionary1 неизвестный ключ находился в «координатах», но этот находится на корневом уровне.

+0

Большое спасибо! Огромная помощь! –

+0

@ Z.S. Если бы этот ответ был ответом, убедитесь, что вы его приняли! Если это не так, вы можете захотеть изменить свой вопрос с большим количеством данных. – Jay

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