ios - color - Swift: declarar un diccionario vacío
uinavigationitem title color (16)
Debe indicar explícitamente el tipo de datos o el tipo se puede deducir cuando declara algo en Swift.
Swift 3
El ejemplo siguiente declara un diccionario con clave como tipo Int
y el valor como tipo de String
.
Método 1: Inicializador
let dic = Dictionary<Int, String>()
Método 2: sintaxis abreviada
let dic = [Int:String]()
Método 3: diccionario literal
var dic = [1: "Sample"]
// dic has NOT to be a constant
dic.removeAll()
Estoy empezando a aprender swift
siguiendo el iBook: el lenguaje de The Swift Programming Language
Swift en Swift proporcionado por Apple. El libro dice que para crear un diccionario vacío uno debe usar [:]
mismo que cuando se declara una matriz como []
:
Declaré una matriz vacía de la siguiente manera:
let emptyArr = [] // or String[]()
Pero al declarar un diccionario vacío, obtengo un error de sintaxis:
let emptyDict = [:]
¿Cómo declaro un diccionario vacío?
Es muy útil para encontrar tu camino
var dict: Dictionary = [:]
Estoy jugando con esto también. Parece extraño que solo puedas declarar un diccionario vacío y luego agregarle un par clave / valor así:
var emptyDictionary = Dictionary<String, Float>()
var flexDictionary = [:]
emptyDictionary["brian"] = 4.5
flexDictionary["key"] = "value" // ERROR : cannot assign to the result of this expression
Pero puede crear un diccionario que acepte diferentes tipos de valores utilizando el tipo "Cualquiera", como sigue:
var emptyDictionary = Dictionary<String, Any>()
emptyDictionary["brian"] = 4.5
emptyDictionary["mike"] = "hello"
La developer.apple.com/library/prerelease/ios/documentation/Swift/… recomienda la siguiente forma de inicializar un diccionario vacío:
var emptyDict = [String: String]()
Estaba un poco confundido cuando me encontré con esta pregunta porque las diferentes respuestas mostraban diferentes formas de inicializar un diccionario vacío. Resulta que en realidad hay muchas maneras en que puede hacerlo, aunque algunos son un poco redundantes o excesivamente detallados dada la capacidad de Swift para inferir el tipo.
var emptyDict = [String: String]()
var emptyDict = Dictionary<String, String>()
var emptyDict: [String: String] = [:]
var emptyDict: [String: String] = [String: String]()
var emptyDict: [String: String] = Dictionary<String, String>()
var emptyDict: Dictionary = [String: String]()
var emptyDict: Dictionary = Dictionary<String, String>()
var emptyDict: Dictionary<String, String> = [:]
var emptyDict: Dictionary<String, String> = [String: String]()
var emptyDict: Dictionary<String, String> = Dictionary<String, String>()
Después de tener un diccionario vacío, puede agregar un par clave-valor como este:
emptyDict["some key"] = "some value"
Si desea vaciar su diccionario nuevamente, puede hacer lo siguiente:
emptyDict = [:]
Los tipos siguen siendo <String, String>
porque así es como se inicializó.
No puede usar [:]
menos que la información del tipo esté disponible.
Debe proporcionarlo explícitamente en este caso:
var dict = Dictionary<String, String>()
var
significa que es mutable, por lo que puede agregarle entradas. Por el contrario, si lo convierte en un let
entonces no puede modificarlo más ( let
significa constante).
Puede usar la notación abreviada [:]
si se puede inferir la información de tipo, por ejemplo
var dict = ["key": "value"]
// stuff
dict = [:] // ok, I''m done with it
En el último ejemplo, se sabe que el diccionario tiene un tipo de Dictionary<String, String>
en la primera línea. Tenga en cuenta que no tiene que especificarlo explícitamente, pero se ha inferido.
Puede declararlo como nulo con lo siguiente:
var assoc : [String:String]
Entonces, es bueno que ya hayas creado el tipo de letra (fíjate que utilicé var y no dejé, piensa en estos como mutables e inmutables). Entonces puedes llenarlo más tarde:
assoc = ["key1" : "things", "key2" : "stuff"]
Si quieres crear un diccionario genérico con cualquier tipo
var dictionaryData = [AnyHashable:Any]()
Simplemente puede declararlo así:
var emptyDict:NSMutableDictionary = [:]
Swift 4
//MARK: - This is empty dictionary
let dic = ["":""]
//MARK:- This is variable dic means if you want to put variable
let dic2 = ["":"", "":"", "":""]
//MARK:- Variable example
let dic3 = ["name":"Shakeel Ahmed", "imageurl":"https://abc?abc.abc/etc", "address":"Rawalpindi Pakistan"]
//MARK: - This is 2nd Variable Example dictionary
let dic4 = ["name": variablename, "city": variablecity, "zip": variablezip]
//MARK:- Dictionary String with Any Object
var dic5a = [String: String]()
var dic5b = [String:AnyObject]()
dic5b = ["name": fullname, "imageurl": imgurl, "language": imgurl, ] as [String : AnyObject]
or
//MARK:- Dictionary String with Any Object
let dic5 = ["name": fullname, "imageurl": imgurl, "language": imgurl, ] as [String : AnyObject]
Tienes que darle un tipo de diccionario
// empty dict with Ints as keys and Strings as values
var namesOfIntegers = Dictionary<Int, String>()
Si el compilador puede inferir el tipo, puede usar la sintaxis más corta
namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type Int, String
Use esto funcionará
var emptyDict = [String: String]()
Usualmente estoy usando
var dictionary:[String:String] = [:]
dictionary.removeAll()
var dictList = String: String para diccionario en swift var arrSectionTitle = String para array en swift
Rápido:
var myDictionary = Dictionary<String, AnyObject>()
var emptyDictionary = [String: String]()
var populatedDictionary = ["key1": "value1", "key2": "value2"]
Nota : si vas a cambiar el contenido del diccionario a lo largo del tiempo, entonces declaralo como var
(variable). Puede declarar un diccionario vacío como let
(constante) pero no tiene sentido si tiene la intención de cambiar su contenido a lo largo del tiempo, ya que la constante no se puede cambiar después de que se haya inicializado.
Respuesta anterior :
La creación de un diccionario vacío de tipo <String, String>
se vería de la siguiente manera:
var emptyDictionary = Dictionary<String, String>()
var parking = [Dictionary < String, Double >()]
^ esto agrega un diccionario para una entrada [cadena: doble]