TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
Recebendo esse aviso ao trabalhar com o TableViewController. Como corrigir esse erro e qual bloco é afetado?
ios
objective-c
xcode5
manish singh
fonte
fonte
Respostas:
Este aparece quando alguém está tentando colocar
nil
em[UIImage imageNamed:]
Adicionar ponto de interrupção simbólico para
[UIImage imageNamed:]
Adicione
$arg3 == nil
condição no Simulador,$r0 == nil
condição no iPhone de 32 bits ou$x2 == nil
no iPhone de 64 bits.Execute seu aplicativo e veja onde o depurador irá parar.
PS Lembre-se de que isso também acontece se o nome da imagem for uma string vazia. Você pode verificar isso adicionando
[(NSString*)$x2 length] == 0
à condição.fonte
UIImage imageNamed:
, mas estou salvando esse ponto de interrupção.$arg3
sintaxe para pontos de interrupção condicionais. Onde posso aprender mais?error: use of undeclared identifier '$arg3'
. Perdi alguma coisa?(int)[$arg3 length] == 0
Esse erro (geralmente) ocorre quando você tenta carregar uma imagem,
[UIImage imageNamed:myImage]
mas o iOS não tem certeza semyImage
é realmente umNSString
e então você tem esse aviso.Você pode corrigir isso usando:
Ou você pode simplesmente verificar
length
o nome doUIImage
:fonte
Como o erro está reclamando que o nome que você deu é
(null)
, isso provavelmente é causado pela chamada[UIImage imageNamed:nil]
. Ou, mais especificamente, a transmissão de uma variável não foi definida, portanto é igual anil
. Enquanto o usostringWithFormat:
se livra do erro, acho que há uma boa chance de ele não estar realmente fazendo o que você deseja. Se o nome que você fornecer for umnil
valor, o uso de stringWithFormat: resultará na procura de uma imagem literalmente denominada "(nulo)", como se você estivesse chamando[UIImage imageNamed:@"(null)"]
.Algo assim é provavelmente uma opção melhor:
Você pode definir um ponto de interrupção no Xcode na linha "Faça outra coisa", para ajudá-lo a descobrir por que esse código está sendo chamado com um valor nulo em primeiro lugar.
fonte
No Xcode 6.4, isso parece ocorrer ao usar "Imagem selecionada" para um item da barra de guias no storyboard, mesmo que seja uma imagem válida.
Na verdade, isso parece não definir a imagem de estado selecionada, portanto, precisa ser definida em Atributos de tempo de execução definidos pelo usuário e removida do atributo SelectedImage do item da barra de guias
fonte
No meu caso, eu estava passando [UIImage imageNamed: @ ""], o que me levou a mostrar o aviso. Basta adicionar pontos de interrupção a todas as linhas em que você usou o imageNamed e depurar a linha em que você encontra o aviso.
fonte
[UIImage imageNamed:@""]
. Como você consertou isso?if
para testar se o nome da imagem não é uma sequência vazia ou usar uma imagem "noImage" padrão, como você não exibe nenhuma imagem quando nenhum nome aplicável se aplica e os Ativos não contêm uma imagem "noImage"?Isso aconteceu comigo depois que um storyboard foi dividido em vários (a mudança real aconteceu quando eu estava de férias, então não sei exatamente como isso foi feito).
Depois de inspecionar o XML dos storyboards, descobri que uma referência de imagem que anteriormente havia apontado para "bottomBar" no catálogo de ativos indicava
imageView:fFo-1g-jzs:image
.No final do arquivo XML, abaixo da
<resources>
tag, estava a tag nomeada<image name="imageView:fFo-1g-jzs:image">
contendo uma grandemutableData
blob.Após redefinir a referência da imagem no storyboard e remover o blob, o erro desapareceu.
fonte
Acabei de corrigir este erro. Basta verificar o uso da
[UIImage imageNamed:(NSString*) imageName]
função. SeimageName
fornil
, ocorre um erro.fonte
Você está fornecendo um nome de imagem inválido; portanto, para validá-lo antes de colocá-lo, você pode executar qualquer uma das maneiras acima, da forma que for mais adequada para o seu código ou como
Espero que ajude !!!!
fonte
O motivo do erro está passando um valor nulo para o método "imageNamed:". Para evitar isso, você pode ocultar o seu imageView ao tentar passar o valor nulo. As chances podem ocorrer na reutilização dos imageViews no UITableView ou podem estar no scrollViews.
Evitei o aviso com a verificação abaixo:
fonte
Recebi esse aviso ao carregar o uso de imagens
[[UIImage imageNamed:normalStr] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
e, quando mudei para[UIImage imageNamed:normalStr]
, o aviso desapareceu.fonte
Uma abordagem é fazer swizzling de método de classe para substituir
[UIImage imageNamed:]
por sua própria implementação, depois verifique o nome da imagem em sua implementação. Veja o seguinte:Como swizzle um método de classe no iOS?
Eu implementei isso na minha categoria UIImage (Debug):
Você pode querer chiar
[UIImage imageNamed:inBundle:compatibleWithTraitCollection:]
também.fonte
Talvez você possa usar isso para confirmar que "nome_da_imagem" não é "nulo"; então, você deixará esse aviso de lado.
fonte