TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
Получение этого предупреждения при работе с TableViewController. Как исправить эту ошибку и какой блок затронут?
ios
objective-c
xcode5
Маниш Сингх
источник
источник
Ответы:
Это один появляется , когда кто - то пытается поставить
nil
в[UIImage imageNamed:]
Добавить символическую точку останова для
[UIImage imageNamed:]
Добавьте
$arg3 == nil
условие в Simulator,$r0 == nil
условие на 32-битный iPhone или$x2 == nil
64-битный iPhone.Запустите приложение и посмотрите, где остановится отладчик.
PS Имейте в виду, что это также происходит, если имя изображения - пустая строка. Вы можете проверить это, добавив
[(NSString*)$x2 length] == 0
в условие.источник
UIImage imageNamed:
, но тем не менее я сохраняю эту точку останова.$arg3
синтаксисе условных точек останова. Где я могу узнать больше?error: use of undeclared identifier '$arg3'
. Я что-то пропустил?(int)[$arg3 length] == 0
Эта ошибка (обычно) возникает, когда вы пытаетесь загрузить изображение,
[UIImage imageNamed:myImage]
но iOS не уверена,myImage
действительно ли это,NSString
а затем появляется это предупреждение.Вы можете исправить это, используя:
Или вы можете просто проверить
length
названиеUIImage
:источник
Поскольку ошибка связана с тем, что имя, которое вы дали
(null)
, скорее всего вызвано вызовом[UIImage imageNamed:nil]
. Или, более конкретно, передача переменной не была установлена, поэтому она равнаnil
. Хотя использованиеstringWithFormat:
позволит избавиться от ошибки, я думаю, что есть большая вероятность, что на самом деле он не делает то, что вы хотите. Если имя, которое вы вводите, являетсяnil
значением, то использование stringWithFormat: приведет к поиску изображения с буквальным именем «(null)», как если бы вы вызывали[UIImage imageNamed:@"(null)"]
.Что-то вроде этого, вероятно, лучший вариант:
Возможно, вы захотите установить точку останова в Xcode в строке «Сделайте что-нибудь еще», чтобы помочь вам понять, почему этот код вызывается с нулевым значением.
источник
В Xcode 6.4 это, похоже, происходит при использовании «Выбранное изображение» для элемента панели вкладок в раскадровке, даже если это действительное изображение.
На самом деле это, похоже, не устанавливает выбранное изображение состояния, поэтому его необходимо определить в пользовательских атрибутах времени выполнения и удалить из атрибута SelectedImage элемента панели вкладок.
источник
В моем случае я передавал [UIImage imageNamed: @ ""], что заставило меня показать предупреждение. Просто добавьте точки останова ко всем строкам, в которых вы использовали imageNamed, и отладьте строку, в которой вы нашли предупреждение.
источник
[UIImage imageNamed:@""]
. Как ты это починил?if
чтобы проверить, не является ли имя изображения пустой строкой, или с использованием изображения по умолчанию «noImage», как вы не отображаете изображение, когда не применяется применимое имя, а активы не содержат изображение «noImage»?Это случилось со мной после того, как раскадровка была разделена на несколько (фактическое изменение произошло, когда я был в отпуске, поэтому я точно не знаю, как это было сделано).
После проверки XML раскадровки я обнаружил, что ссылка на изображение, которая ранее указывала на «bottomBar» в каталоге ресурсов, вместо этого указывала на
imageView:fFo-1g-jzs:image
.В конце XML-файла под
<resources>
тегом был тег с именем,<image name="imageView:fFo-1g-jzs:image">
содержащий большойmutableData
двоичный .После сброса ссылки на изображение в раскадровке и удаления капли ошибка исчезла.
источник
Я только что исправил эту ошибку. Просто проверьте использование
[UIImage imageNamed:(NSString*) imageName]
функции. ЕслиimageName
естьnil
, то возникает ошибка.источник
Вы указываете недопустимое имя изображения, поэтому перед его размещением необходимо проверить его, вы можете выполнить любой из вышеперечисленных способов, в зависимости от того, что имеет смысл для вашего кода или например
Надеюсь, это поможет !!!!
источник
Причина ошибки - передача нулевого значения методу imageNamed :. Чтобы избежать этого, вы можете скрыть свой imageView, когда пытаетесь передать значение nil. Вероятность может возникнуть при повторном использовании imageViews в UITableView или может быть в scrollViews.
Я избежал предупреждения с помощью следующей проверки:
источник
Я получил это предупреждение, когда я загружаю использование изображения
[[UIImage imageNamed:normalStr] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
, чем, я меняю на[UIImage imageNamed:normalStr]
, предупреждение исчезло.источник
Один из подходов состоит в том, чтобы заменить метод класса
[UIImage imageNamed:]
собственной реализацией, а затем проверить имя изображения в своей реализации. См. Следующее:Как изменить метод класса на iOS?
Я реализовал это в моей категории UIImage (Debug):
Возможно, вы также захотите выпить
[UIImage imageNamed:inBundle:compatibleWithTraitCollection:]
.источник
Возможно, вы можете использовать это, чтобы подтвердить, что «imageName» не является «nil»; тогда вы оставите это предупреждение.
источник