Tengo un DictionarySwift y me gustaría obtener una clave en un índice específico.
var myDict : Dictionary<String,MyClass> = Dictionary<String,MyClass>()
Sé que puedo iterar sobre las claves y registrarlas
for key in myDict.keys{
NSLog("key = \(key)")
}
Sin embargo, curiosamente, algo como esto no es posible.
var key : String = myDict.keys[0]
Por qué ?
ios
dictionary
swift
el crítico
fuente
fuente

Respuestas:
Eso es porque las
keysdevolucionesLazyMapCollection<[Key : Value], Key>, que no se pueden suscribir con unInt. Una forma de manejar esto es avanzar el diccionariostartIndexpor el número entero que desea subíndice, por ejemplo:Otra posible solución sería inicializar una matriz con
keyscomo entrada, luego puede usar subíndices enteros en el resultado:Recuerde, los diccionarios están inherentemente desordenados, así que no espere que la clave en un índice dado sea siempre la misma.
fuente
Array(myDict)[0].0ya que no copiaría la matriz de claves, y no debería copiar las estructuras internas del diccionario, aunque podría hacerlo.myDict[keysArray[0]].'NSDictionary' is not convertible to '_ArrayBuffer<T>'Swift 3:
Array()puede ser útil para hacer esto.Obtener la clave :
Obtener valor:
fuente
["a": 1, "b": 2], se puede convertir en una serie de diccionarios como[[key: "a", value: 1], [key: "b", value: 2]], esto luego se puede acceder por índice.Aquí hay una pequeña extensión para acceder a claves y valores en el diccionario por índice:
fuente
Puede iterar sobre un diccionario y tomar un índice con for-in y enumerar (como han dicho otros, no hay garantía de que saldrá ordenado como se muestra a continuación)
Si desea ordenar primero ...
luego iterar.
Si desea crear un diccionario ordenado, debe buscar en Genéricos.
fuente
dict.enumerated().forEach { (index, element) in ... }De https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/CollectionTypes.html :
Si necesita usar claves o valores de un diccionario con una API que toma una instancia de Array, inicialice una nueva matriz con la propiedad de claves o valores:
fuente
SWIFT 3. Ejemplo para el primer elemento
fuente
En Swift 3, intente usar este código para obtener el par clave-valor (tupla) en el índice dado:
fuente
Aquí hay un ejemplo, usando Swift 1.2
fuente
SWIFT 4
Un poco fuera de tema: pero aquí está si tiene una matriz de diccionarios, es decir: [[String: String]]
fuente
Estaba buscando algo como LinkedHashMap en Java. Ni Swift ni Objective-C tienen uno si no me equivoco.
Mi pensamiento inicial fue envolver mi diccionario en una matriz.
[[String: UIImage]]pero luego me di cuenta de que agarrar la clave del diccionario era una locura,Array(dict)[index].keyasí que fui con Tuples. Ahora mi matriz se ve[(String, UIImage)]así que puedo recuperarlatuple.0. No más convertirlo en una matriz. Solo mis 2 centavos.fuente