TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
Obtention de cet avertissement lors de l'utilisation de TableViewController. Comment corriger cette erreur et quel bloc est affecté?
ios
objective-c
xcode5
manish singh
la source
la source
Réponses:
Celui-ci apparaît quand quelqu'un essaie de mettre
nil
en[UIImage imageNamed:]
Ajouter un point d'arrêt symbolique pour
[UIImage imageNamed:]
Ajouter une
$arg3 == nil
condition sur le simulateur,$r0 == nil
condition sur un iPhone 32 bits ou$x2 == nil
sur un iPhone 64 bits.Exécutez votre application et voyez où le débogueur s'arrêtera.
PS Gardez à l'esprit que cela se produit également si le nom de l'image est une chaîne vide. Vous pouvez vérifier cela en ajoutant
[(NSString*)$x2 length] == 0
à la condition.la source
UIImage imageNamed:
, mais j'enregistre néanmoins ce point d'arrêt.$arg3
syntaxe des points d'arrêt conditionnels. Où puis-je en savoir plus?error: use of undeclared identifier '$arg3'
. Ai-je oublié quelque chose?(int)[$arg3 length] == 0
Cette erreur se produit (généralement) lorsque vous essayez de charger une image avec
[UIImage imageNamed:myImage]
mais iOS ne sait pas simyImage
c'est vraiment unNSString
et vous avez cet avertissement.Vous pouvez résoudre ce problème en utilisant:
Ou vous pouvez simplement vérifier
length
le nom duUIImage
:la source
Étant donné que l'erreur se plaint que le nom que vous avez donné est
(null)
, cela est probablement dû à un appel[UIImage imageNamed:nil]
. Ou plus précisément, la transmission d'une variable n'a pas été définie, elle est donc égale ànil
. Bien que l'utilisationstringWithFormat:
élimine l'erreur, je pense qu'il y a de fortes chances que cela ne fasse pas ce que vous voulez. Si le nom que vous fournissez est unenil
valeur, alors l'utilisation de stringWithFormat: entraînera la recherche d'une image littéralement nommée "(null)", comme si vous appeliez[UIImage imageNamed:@"(null)"]
.Quelque chose comme ça est probablement une meilleure option:
Vous voudrez peut-être définir un point d'arrêt dans Xcode sur cette ligne "Faire autre chose", pour vous aider à comprendre pourquoi ce code est appelé avec une valeur nulle en premier lieu.
la source
Dans Xcode 6.4, cela semble se produire lors de l'utilisation de "Image sélectionnée" pour un élément de la barre d'onglets dans le storyboard, même s'il s'agit d'une image valide.
Cela ne semble pas réellement définir l'image d'état sélectionnée de toute façon, elle doit donc être définie dans les attributs d'exécution définis par l'utilisateur et supprimée de l'attribut SelectedImage de l'élément de la barre d'onglets.
la source
Dans mon cas, je passais [UIImage imageNamed: @ ""], ce qui m'a fait afficher l'avertissement. Ajoutez simplement des points d'arrêt à toutes les lignes où vous avez utilisé imageNamed et déboguez la ligne où vous trouvez l'avertissement.
la source
[UIImage imageNamed:@""]
. Comment l'avez-vous réparé?if
pour tester si le nom de l'image n'est pas une chaîne vide, ou l'utilisation d'une image "noImage" par défaut, comment afficher aucune image lorsqu'aucun nom applicable ne s'applique et que les éléments ne contiennent pas d'image "noImage"?Cela m'est arrivé après qu'un storyboard ait été divisé en plusieurs (le changement réel s'est produit lorsque j'étais en vacances, donc je ne sais pas exactement comment cela a été fait).
Après avoir inspecté le XML des storyboards, j'ai trouvé qu'une référence d'image qui avait précédemment pointé vers "bottomBar" dans le catalogue des ressources pointait plutôt vers
imageView:fFo-1g-jzs:image
.À la fin du fichier XML sous la
<resources>
balise se trouvait la balise nommée<image name="imageView:fFo-1g-jzs:image">
contenant un grosmutableData
blob.Après avoir réinitialisé la référence d'image dans le storyboard et supprimé le blob, l'erreur a disparu.
la source
Je viens de corriger cette erreur. Vérifiez simplement l'utilisation de la
[UIImage imageNamed:(NSString*) imageName]
fonction. Si l'imageName
estnil
, alors erreur se produit.la source
Vous fournissez un nom d'image non valide, vous devez donc valider avant de le mettre, vous pouvez utiliser l'une des méthodes ci-dessus, selon ce qui est logique pour votre code ou autre.
J'espère que cela aidera !!!!
la source
La raison de l'erreur passe une valeur nulle à la méthode «imageNamed:». Pour éviter cela, vous pouvez masquer votre imageView lorsque vous essayez de transmettre la valeur nil. Les chances peuvent se produire lors de la réutilisation des imageViews dans UITableView ou peuvent être dans scrollViews.
J'ai évité l'avertissement avec la vérification ci-dessous:
la source
J'ai reçu cet avertissement lorsque je charge l'utilisation de l'image
[[UIImage imageNamed:normalStr] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
, puis, je passe à[UIImage imageNamed:normalStr]
, l'avertissement a disparu.la source
Une approche consiste à faire basculer la méthode de classe pour remplacer
[UIImage imageNamed:]
par votre propre implémentation, puis à vérifier le nom de l'image dans votre implémentation. Voir ce qui suit:Comment faire basculer une méthode de classe sur iOS?
J'ai implémenté cela dans ma catégorie UIImage (Debug):
Vous voudrez peut-être également swizzler
[UIImage imageNamed:inBundle:compatibleWithTraitCollection:]
.la source
Peut-être que vous pouvez l'utiliser pour confirmer que "imageName" n'est pas un "nil", alors vous laisserez cet avertissement de côté.
la source