TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
Recibiendo esta advertencia mientras trabaja con TableViewController. ¿Cómo subsanar este error y qué bloque se ve afectado?
ios
objective-c
xcode5
manish singh
fuente
fuente
Respuestas:
Éste aparece cuando alguien está tratando de poner
nil
en[UIImage imageNamed:]
Agregue un punto de interrupción simbólico para
[UIImage imageNamed:]
Agregue
$arg3 == nil
condición en el simulador,$r0 == nil
condición en iPhone de 32 bits o$x2 == nil
en iPhone de 64 bits.Ejecute su aplicación y vea dónde se detendrá el depurador.
PD: Tenga en cuenta que esto también sucede si el nombre de la imagen es una cadena vacía. Puede verificar esto agregando
[(NSString*)$x2 length] == 0
a la condición.fuente
UIImage imageNamed:
, pero de todos modos estoy guardando este punto de interrupción.$arg3
sintaxis de los puntos de interrupción condicionales. ¿Dónde puedo aprender más?error: use of undeclared identifier '$arg3'
. ¿Me he perdido algo?(int)[$arg3 length] == 0
Este error (por lo general) ocurre cuando intenta cargar una imagen con
[UIImage imageNamed:myImage]
pero iOS no está seguro de simyImage
es realmente unaNSString
y luego aparece esta advertencia.Puedes arreglar esto usando:
O simplemente puede buscar
length
el nombre delUIImage
:fuente
Dado que el error es quejarse de que el nombre que dio es
(null)
, lo más probable es que esto se deba a la llamada[UIImage imageNamed:nil]
. O más específicamente, no se ha establecido pasar una variable, por lo que es igual anil
. Si bien el usostringWithFormat:
eliminaría el error, creo que es muy probable que no esté haciendo lo que quieres. Si el nombre que proporcionas es unnil
valor, entonces el uso de stringWithFormat: daría como resultado la búsqueda de una imagen que se llama literalmente "(nulo)", como si estuvieras llamando[UIImage imageNamed:@"(null)"]
.Algo como esto es probablemente una mejor opción:
Es posible que desee establecer un punto de interrupción en Xcode en esa línea "Hacer algo más", para ayudarlo a descubrir por qué este código se llama con un valor nulo en primer lugar.
fuente
En Xcode 6.4, esto parece ocurrir cuando se usa "Imagen seleccionada" para un elemento de la barra de pestañas en el guión gráfico, incluso si es una imagen válida.
En realidad, esto no parece establecer la imagen de estado seleccionada de todos modos, por lo que debe definirse en Atributos de tiempo de ejecución definidos por el usuario y eliminarse del atributo Imagen seleccionada del elemento de la barra de pestañas
fuente
En mi caso, estaba pasando [UIImage imageNamed: @ ""], lo que me hizo mostrar la advertencia. Simplemente agregue puntos de interrupción a todas las líneas donde ha usado imageNamed y depure la línea donde encuentra la advertencia.
fuente
[UIImage imageNamed:@""]
. ¿Cómo lo arreglaste?if
para probar si el nombre de la imagen no es una cadena vacía, o usar una imagen "noImage" predeterminada, ¿cómo no muestra ninguna imagen cuando no se aplica ningún nombre aplicable y los Activos no contienen una imagen "noImage"?Esto me sucedió después de que un guión gráfico se dividiera en varios (el cambio real ocurrió cuando estaba de vacaciones, así que no sé exactamente cómo se hizo).
Después de inspeccionar el XML de los guiones gráficos, encontré que una referencia de imagen que anteriormente había apuntado a "bottomBar" en el catálogo de activos en su lugar apuntaba a
imageView:fFo-1g-jzs:image
.Al final del archivo XML, debajo de la
<resources>
etiqueta, se nombró<image name="imageView:fFo-1g-jzs:image">
una etiqueta que contiene una granmutableData
mancha.Después de restablecer la referencia de la imagen en el guión gráfico y eliminar el blob, el error desapareció.
fuente
Acabo de arreglar este error. Simplemente verifique el uso de la
[UIImage imageNamed:(NSString*) imageName]
función. SiimageName
es asínil
, se produce un error.fuente
Está proporcionando un nombre de imagen no válido, por lo que debe validarlo antes de colocarlo, puede hacer cualquiera de las formas anteriores, lo que tenga sentido para su código o me gusta
¡Espero que te ayude!
fuente
La razón del error es pasar un valor nulo al método "imageNamed:". Para evitar esto, puede ocultar su imageView cuando intente pasar el valor nulo. Las posibilidades pueden ocurrir al reutilizar imageViews en UITableView o pueden estar en scrollViews.
Evité la advertencia con la siguiente verificación:
fuente
Recibí esta advertencia cuando cargo el uso de la imagen
[[UIImage imageNamed:normalStr] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
, luego, cambio a[UIImage imageNamed:normalStr]
, la advertencia desapareció.fuente
Un enfoque es hacer swizzling del método de clase para reemplazarlo
[UIImage imageNamed:]
con su propia implementación, luego verifique el nombre de la imagen en su implementación. Vea lo siguiente:¿Cómo cambiar un método de clase en iOS?
Implementé esto en mi categoría UIImage (Debug):
Es posible que también desee swizzle
[UIImage imageNamed:inBundle:compatibleWithTraitCollection:]
.fuente
Tal vez puedas usar esto para confirmar que "imageName" no es un "nulo", entonces dejarás de lado esta advertencia.
fuente