Solo para agregar a esto, porque también recibí este error. Revisar todas estas respuestas parece aplicarse a trabajar con la interfaz de usuario y el material del guión gráfico. Sé que el póster original parecía estar funcionando con la interfaz de usuario, pero al buscar posibles razones para este error, la mayoría de las preguntas vuelven a esta pregunta con los otros cerrados como duplicados o simplemente tienen problemas para conectar cosas en un guión gráfico, así que lo haré agrega mi solución
Estaba trabajando en la codificación de un servicio web en Swift 2. Había creado todos los objetos proxy y apéndices necesarios. Mientras recorría el XML devuelto, estaba creando instancias dinámicas de mis objetos, de los cuales todos provenían NSObject
y los utilizaba setValue:forKey
. Cada vezsetValue:forKey
trató de establecer una propiedad, explotó con este error.
Tenía una sentencia switch para cada tipo que estaba tratando con (por ejemplo Bool?
, CShort?
,String?
) y para cada nodo XML que revisé y verifiqué qué tipo estaba en el objeto y luego convertí el valor a ese tipo e intenté configurarlo setValue:forKey
.
Finalmente comencé a comentar todas estas setValue:forKey
líneas y descubrí que mi default
caso de declaración de cambio funcionó paraString?
.
Finalmente descubrí que no puedes usar tipos rápidos opcionales con a setValue:forKey
menos que tengan una asignación directa a un tipo Objective-C como String?
o NSNumber?
. Terminé cambiando todos los CShort?
tipos NSNumber?
ya que eso tiene una asignación directa. En Bool?
mi caso, estaba bien usarlo Bool
e inicializarlo false
. Otros pueden no tener ese lujo.
De todos modos, qué dolor de cabeza fue tan esperemos que esto ayude a alguien más que tiene un problema similar y sigue siendo redirigido a esta pregunta y diciéndose a sí mismos: "¡No estoy haciendo nada en la interfaz de usuario!".
Por último, para reiterar una vez más, la codificación de valores clave no funciona con opciones. A continuación, terminé encontrando un lugar, pero olvido dónde, así que a quien haya publicado esto, me disculpo y agradecería si recordara dónde encontré esto, pero me salvó la vida:
No puede usar KVC en una propiedad Int opcional, porque KVC es Cocoa / Objective-C, y Objective-C no puede ver un Int opcional: no está conectado a Objective-C. Objective-C solo puede ver los tipos que están unidos a Objective-C:
tipos de clase que se derivan de NSObject
tipos de clase que están expuestos con @objc
Estructuras rápidas que están puenteadas