TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
Diese Warnung wird während der Arbeit mit TableViewController angezeigt. Wie kann dieser Fehler behoben werden und welcher Block ist betroffen?
ios
objective-c
xcode5
manish singh
quelle
quelle
Antworten:
Dies erscheint , wenn jemand zu setzen versucht ,
nil
in[UIImage imageNamed:]
Fügen Sie einen symbolischen Haltepunkt für hinzu
[UIImage imageNamed:]
Fügen Sie eine
$arg3 == nil
Bedingung auf dem Simulator, eine$r0 == nil
Bedingung auf dem 32-Bit-iPhone oder$x2 == nil
auf dem 64-Bit-iPhone hinzu.Führen Sie Ihre Anwendung aus und sehen Sie, wo der Debugger stoppt.
PS Beachten Sie, dass dies auch passiert, wenn der Bildname eine leere Zeichenfolge ist. Sie können dies überprüfen, indem Sie
[(NSString*)$x2 length] == 0
der Bedingung hinzufügen .quelle
UIImage imageNamed:
, aber ich speichere diesen Haltepunkt trotzdem.$arg3
Syntax für bedingte Haltepunkte. Wo kann ich mehr lernen?error: use of undeclared identifier '$arg3'
. Habe ich etwas verpasst?(int)[$arg3 length] == 0
Dieser Fehler tritt (normalerweise) auf, wenn Sie versuchen, ein Bild mit zu laden
[UIImage imageNamed:myImage]
, iOS jedoch nicht sichermyImage
ist , ob es sich wirklich um einen handelt,NSString
und dann diese Warnung angezeigt wird.Sie können dies beheben, indem Sie:
Oder Sie können einfach nach
length
dem Namen desUIImage
:quelle
Da der Fehler sich darüber beschwert, dass der von Ihnen angegebene Name lautet
(null)
, wird dies höchstwahrscheinlich durch einen Anruf verursacht[UIImage imageNamed:nil]
. Oder genauer gesagt, die Übergabe einer Variablen wurde nicht festgelegt, daher ist sie gleichnil
. Während der VerwendungstringWithFormat:
würde den Fehler beseitigen, ich denke, es besteht eine gute Chance, dass es nicht wirklich tut, was Sie wollen. Wenn der von Ihnen angegebene Name einnil
Wert ist, führt die Verwendung von stringWithFormat: dazu, dass nach einem Bild mit dem wörtlichen Namen "(null)" gesucht wird, als würden Sie aufrufen[UIImage imageNamed:@"(null)"]
.So etwas ist wahrscheinlich eine bessere Option:
Möglicherweise möchten Sie in Xcode einen Haltepunkt in dieser Zeile "Etwas anderes tun" festlegen, um herauszufinden, warum dieser Code überhaupt mit einem Nullwert aufgerufen wird.
quelle
In Xcode 6.4 scheint dies zu geschehen, wenn "Ausgewähltes Bild" für ein Registerkartenelement im Storyboard verwendet wird, auch wenn es sich um ein gültiges Bild handelt.
Dies scheint das ausgewählte Statusbild ohnehin nicht festzulegen, daher muss es in benutzerdefinierten Laufzeitattributen definiert und aus dem SelectedImage-Attribut des Registerkartenleistenelements entfernt werden
quelle
In meinem Fall habe ich [UIImage imageNamed: @ ""] übergeben, wodurch ich die Warnung angezeigt habe. Fügen Sie einfach allen Zeilen, in denen Sie imageNamed verwendet haben, Haltepunkte hinzu, und debuggen Sie die Zeile, in der Sie die Warnung finden.
quelle
[UIImage imageNamed:@""]
. Wie hast du das behoben?if
Wie können Sie kein Bild anzeigen, wenn kein zutreffender Name zutrifft und die Assets kein "noImage" -Bild enthalten, außer wenn Sie ein verwenden , um zu testen, ob der Bildname keine leere Zeichenfolge ist, oder ein Standardbild "noImage" verwenden?Dies geschah mir, nachdem ein Storyboard in mehrere geteilt wurde (die eigentliche Änderung erfolgte in den Ferien, daher weiß ich nicht genau, wie es gemacht wurde).
Nachdem ich das XML der Storyboards überprüft hatte, stellte ich fest, dass stattdessen auf eine Bildreferenz verwiesen wurde, die zuvor im Asset-Katalog auf "bottomBar" verwiesen hatte
imageView:fFo-1g-jzs:image
.Am Ende der XML-Datei unter dem
<resources>
Tag befand sich ein Tag<image name="imageView:fFo-1g-jzs:image">
mit einem großenmutableData
Blob.Nach dem Zurücksetzen der Bildreferenz im Storyboard und dem Entfernen des Blobs wurde der Fehler behoben.
quelle
Ich habe diesen Fehler gerade behoben. Überprüfen Sie einfach die Verwendung der
[UIImage imageNamed:(NSString*) imageName]
Funktion. Wenn dies der FallimageName
istnil
, tritt ein Fehler auf.quelle
Sie geben einen ungültigen Bildnamen an. Sie müssen ihn daher vor dem Einfügen überprüfen. Sie können eine der oben genannten Methoden ausführen, je nachdem, was für Ihren Code oder ähnliches sinnvoll ist
Hoffe es wird helfen !!!!
quelle
Der Grund für den Fehler ist die Übergabe eines Nullwerts an die Methode "imageNamed:". Um dies zu vermeiden, können Sie Ihre imageView ausblenden, wenn Sie versuchen, den Nullwert zu übergeben. Die Chancen können bei der Wiederverwendung der imageViews in UITableView oder in scrollViews auftreten.
Ich habe die Warnung mit der folgenden Überprüfung vermieden:
quelle
Ich habe diese Warnung erhalten, als ich die Bildnutzung geladen habe. Als
[[UIImage imageNamed:normalStr] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
ich zu wechselte[UIImage imageNamed:normalStr]
, war die Warnung weg.quelle
Ein Ansatz besteht darin, Klassenmethoden zu verwenden, um sie
[UIImage imageNamed:]
durch Ihre eigene Implementierung zu ersetzen , und dann den Image-Namen in Ihrer Implementierung zu überprüfen. Siehe folgendes:Wie kann ich eine Klassenmethode unter iOS verwenden?
Ich habe dies in meiner Kategorie UIImage (Debug) implementiert:
Vielleicht möchten Sie auch schwitzen
[UIImage imageNamed:inBundle:compatibleWithTraitCollection:]
.quelle
Vielleicht können Sie dies verwenden, um zu bestätigen, dass "imageName" kein "Null" ist. Dann lassen Sie diese Warnung weg.
quelle