"Type'Program" no se ajusta al protocolo 'Any Object' "

Actualicé xcode y ahora tengo un error en mi proyecto y no tengo idea de qué hacer con él.

struct Program { let name : String let url : String } self.arrayOfPrograms = [Program(name: "First", url: "http://1.com"), Program(name: "Second", url: "http://2.com"), Program(name: "Third", url: "http://2.com")] 

y me sale el error "Type'Program" no se ajusta al protocolo 'Any Object' "

Como se informó en la documentation :

AnyObject puede representar una instancia de cualquier tipo de class.

Un struct no es una class, por lo que no se puede convertir en AnyObject

Usted debe:

  • convertir el Program en una class
  • defina su matriz como Array<Any>
  • si se supone que su matriz debe contener instancias de Program , declare como Array<Program>

Huelga decir que la última es la mejor solución, mientras que la primera es la que no recomendaría porque requiere que realice cambios de layout (hay una razón por la que lo declaró como un tipo de valor y no como un tipo de reference).

Nota al AnyObject : las matrices y los dictionarys se pueden convertir en AnyObject porque se puentean automáticamente respectivamente a NSArray y NSDictionary , que son classs.

mira este enlace, obtienes tu answare, recientemente envolví mi cabeza en algo que he encontrado muy extraño en Swift. Swift proporciona dos protocolos de alto nivel llamados Any y AnyObject. Cualquiera se puede usar para types de valor (como estructuras) y types de reference (classs), mientras que AnyObject solo se puede usar para classs.

Ingrese la descripción del enlace aquí.