transportation the significado programming programación lenguaje language español descargar swift

the - swift(lenguaje de programación)



El valor del tipo ''Cadena'' no se ajusta al tipo de valor de diccionario esperado ''AnyObject'' (2)

Swift 3

En primer lugar, una String en Swift es una estructura y no se ajusta a AnyObject .

Solución # 1

La mejor solución en Swift 3 es cambiar el tipo del valor del diccionario de AnyObject a Any (que incluye la estructura String).

let joeSmith : [String : Any] = ["Name" : "Joe Smith", "Height" : 42, "Soccer Expo" : true, "Guardian" : "Jim and Jan Smith"]

Solución # 2

Sin embargo, si realmente desea mantener el valor del Diccionario definido como AnyObject , puede forzar un puente desde la estructura String a la clase NSString agregando as AnyObject como se muestra a continuación (hice lo mismo para los otros valores)

let joeSmith : [String : AnyObject] = [ "Name" : "Joe Smith" as AnyObject, "Height" : 42 as AnyObject, "Soccer Expo" : true as AnyObject, "Guardian" : "Jim and Jan Smith" as AnyObject]

Swift 2

El problema aquí es que definió el valor de su diccionario como AnyObject y String en Swift NO es un objeto, es una struct .

El compilador se está quejando de String porque es el primer error, pero si lo eliminas, te dará un error para el 42, que nuevamente es un Int y luego un Struct .

Y tendrás el mismo problema con true (Bool -> Struct).

Puedes resolver este problema de 2 maneras:

Fundación # 1

Si agrega una base de import Foundation la estructura Swift se NSString automáticamente a NSString (que es un objeto) y el compilador está contento.

Cualquier # 2

Usted reemplaza AnyObject con Any . Ahora puedes poner cualquier tipo de valor en tu diccionario.

Consideraciones

En mi humilde opinión, nosotros (los desarrolladores de Swift) deberíamos dejar de confiar progresivamente en el puente de Objective-C y utilizar la segunda solución.

Recibo este error al crear un diccionario en Swift:

El valor del tipo ''Cadena'' no se ajusta al tipo de valor de diccionario esperado ''AnyObject''

Código:

let joeSmith : [String : AnyObject] = ["Name" : "Joe Smith", "Height" : 42, "Soccer Expo" : true, "Guardian" : "Jim and Jan Smith"]


OMHO Si está utilizando Any o AnyObject, está equivocado en el sentido de usar un lenguaje fuertemente tipado

Porque las enumeraciones en swift pueden contener una buena respuesta de los datos asociados aquí es cambiar la forma en que está usando el idioma y crear una enumeración que capture los diferentes casos y luego usar la enumeración como un tipo. Si el diccionario representa actualmente una clase propia, tal vez deba definir la clase. De cualquier manera, lo que estás haciendo debería gritarte que algo está mal con tu código.

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html