TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
Mendapatkan peringatan ini saat bekerja dengan TableViewController. Bagaimana cara memperbaiki kesalahan ini dan blok mana yang terpengaruh?
ios
objective-c
xcode5
manish singh
sumber
sumber
Jawaban:
Satu ini muncul ketika seseorang mencoba untuk menempatkan
nil
di[UIImage imageNamed:]
Tambahkan breakpoint simbolis untuk
[UIImage imageNamed:]
Tambahkan
$arg3 == nil
ketentuan di Simulator,$r0 == nil
ketentuan di iPhone 32-bit, atau$x2 == nil
di iPhone 64-bit.Jalankan aplikasi Anda dan lihat di mana debugger akan berhenti.
PS Perlu diingat ini juga terjadi jika nama gambar adalah string kosong. Anda dapat memeriksanya dengan menambahkan
[(NSString*)$x2 length] == 0
ke ketentuan.sumber
UIImage imageNamed:
, tapi saya tetap menyimpan breakpoint ini.$arg3
sintaks untuk breakpoint bersyarat. Dimana saya bisa belajar lebih banyak?error: use of undeclared identifier '$arg3'
. Apakah saya melewatkan sesuatu?(int)[$arg3 length] == 0
Kesalahan ini (biasanya) terjadi ketika Anda mencoba memuat gambar
[UIImage imageNamed:myImage]
tetapi iOS tidak yakin apakahmyImage
benar-benar aNSString
dan kemudian Anda memiliki peringatan ini.Anda dapat memperbaikinya menggunakan:
Atau Anda cukup memeriksa
length
nama dariUIImage
:sumber
Karena kesalahan mengeluh bahwa nama yang Anda berikan adalah
(null)
, kemungkinan besar ini disebabkan oleh panggilan[UIImage imageNamed:nil]
. Atau lebih khusus lagi, meneruskan variabel belum ditetapkan, jadi itu sama dengannil
. Saat menggunakanstringWithFormat:
akan menghilangkan kesalahan, saya pikir ada kemungkinan bagus itu tidak benar-benar melakukan apa yang Anda inginkan. Jika nama yang Anda berikan adalah sebuahnil
nilai, maka menggunakan stringWithFormat: akan membuatnya mencari gambar yang secara harfiah bernama "(null)", seolah-olah Anda memanggil[UIImage imageNamed:@"(null)"]
.Sesuatu seperti ini mungkin merupakan pilihan yang lebih baik:
Anda mungkin ingin menyetel breakpoint di Xcode pada baris "Lakukan sesuatu yang lain", untuk membantu Anda mengetahui mengapa kode ini dipanggil dengan nilai nol di tempat pertama.
sumber
Di Xcode 6.4, ini tampaknya terjadi saat menggunakan "Gambar yang Dipilih" untuk item tab bar di storyboard, meskipun itu gambar yang valid.
Ini tampaknya tidak mengatur gambar status yang dipilih, jadi itu perlu didefinisikan di Atribut Waktu Proses yang Ditentukan Pengguna, dan dihapus dari atribut SelectedImage dari Item Tab Bar
sumber
Dalam kasus saya, saya melewati [UIImage imageNamed: @ ""] yang menyebabkan saya menampilkan peringatan. Cukup tambahkan breakpoint ke semua baris tempat Anda telah menggunakan imageNamed dan debug baris tempat Anda menemukan peringatan.
sumber
[UIImage imageNamed:@""]
. Bagaimana Anda memperbaikinya?if
to untuk menguji apakah nama gambar bukan string kosong, atau menggunakan gambar "noImage" default, bagaimana Anda tidak menampilkan gambar saat tidak ada nama yang berlaku dan Aset tidak berisi gambar "noImage"?Ini terjadi pada saya setelah papan cerita dipecah menjadi beberapa (perubahan sebenarnya terjadi ketika saya sedang liburan, jadi saya tidak tahu persis bagaimana hal itu dilakukan).
Setelah memeriksa XML storyboard, saya menemukan bahwa referensi gambar yang sebelumnya menunjuk ke "bottomBar" di katalog aset malah menunjuk ke
imageView:fFo-1g-jzs:image
.Di akhir file XML di bawah
<resources>
tag itu diberi nama tag yang<image name="imageView:fFo-1g-jzs:image">
mengandung filemutableData
gumpalan .Setelah menyetel ulang referensi gambar di storyboard dan menghapus blob, kesalahan tersebut hilang.
sumber
Saya baru saja memperbaiki kesalahan ini. Cukup periksa penggunaan
[UIImage imageNamed:(NSString*) imageName]
fungsinya. JikaimageName
adalahnil
, kesalahan maka terjadi.sumber
Anda memberikan beberapa nama gambar yang tidak valid, jadi perlu memvalidasi sebelum meletakkannya, Anda dapat melakukan salah satu cara di atas mana saja yang masuk akal untuk kode Anda atau sejenisnya
Semoga bisa membantu !!!!
sumber
Alasan kesalahan ini adalah mengirimkan nilai nihil ke metode "imageNamed:". Untuk menghindarinya, Anda bisa menyembunyikan imageView saat mencoba meneruskan nilai nil. Kemungkinannya bisa terjadi saat menggunakan kembali imageView di UITableView atau mungkin di scrollView.
Saya menghindari peringatan dengan cek di bawah ini:
sumber
Saya mendapat peringatan ini ketika saya memuat penggunaan gambar
[[UIImage imageNamed:normalStr] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
, daripada, saya ubah ke[UIImage imageNamed:normalStr]
, peringatan hilang.sumber
Salah satu pendekatannya adalah melakukan class method swizzling untuk diganti
[UIImage imageNamed:]
dengan implementasi Anda sendiri, kemudian periksa nama image dalam implementasi Anda. Lihat berikut ini:Bagaimana cara menipu metode kelas di iOS?
Saya menerapkan ini dalam kategori UIImage (Debug) saya:
Anda mungkin ingin tertipu
[UIImage imageNamed:inBundle:compatibleWithTraitCollection:]
juga.sumber
Mungkin Anda dapat menggunakan ini untuk mengonfirmasi "imageName" bukan "nil"; Kemudian Anda akan mengabaikan peringatan ini.
sumber