TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
Получение этого предупреждения при работе с TableViewController. Как исправить эту ошибку и какой блок затронут?
TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
Получение этого предупреждения при работе с TableViewController. Как исправить эту ошибку и какой блок затронут?
Этот появляется, когда кто-то пытается положить nil в конце концов в [UIImage imageNamed:]
Добавить символическую точку останова для [UIImage imageNamed:] 
Добавить условие $arg3 == nil (на Simulator) или $r0 == nil на устройстве iPhone 
Запустите приложение и посмотрите, где проблема сохраняется.
ПРИБЫЛЬ
Эта ошибка (обычно) возникает, когда вы пытаетесь загрузить изображение с помощью [UIImage imageNamed:myImage], но iOS не уверен, что myImage действительно является NSString, и тогда у вас есть это предупреждение.
Вы можете исправить это, используя:
[UIImage imageNamed:[NSString stringWithFormat:@"%@", myImage]]
Или вы можете просто проверить для length имя UIImage:
if (myImage && [myImage length]) {
    [UIImage imageNamed:myImage];
}
		Так как ошибка жалуется, что имя, которое вы дали, это (null), это, скорее всего, вызвано вызовом [UIImage imageNamed:nil]. Или, более конкретно, передача переменной не была установлена, поэтому она равна nil. Хотя использование stringWithFormat: избавит вас от ошибки, я думаю, что есть хороший шанс, что он фактически не делает то, что вы хотите. Если указанное вами имя является значением nil, то использование stringWithFormat: приведет к поиску изображения, которое буквально называется "(null)", как если бы вы звонили [UIImage imageNamed:@"(null)"].
Что-то вроде этого, вероятно, лучший вариант:
if (name) {
    UIImage *image = [UIImage imageNamed:name];
} else {
    // Do something else
}
Возможно, вы захотите установить точку останова в Xcode на строке "Сделать что-то еще", чтобы помочь вам понять, почему этот код получает вызов с нулевым значением в первую очередь.
В Xcode 6.4 это происходит при использовании "Selected Image" для элемента панели вкладок в раскадровке, даже если это допустимое изображение.
На самом деле это не похоже на выбранное изображение состояния в любом случае, поэтому его необходимо определить в пользовательских атрибутах времени выполнения и удалить из атрибута SelectedImage элемента панели вкладок
В моем случае я проходил мимо [UIImage imageNamed: @""], что заставило меня показать предупреждение. Просто добавьте точки останова во все строки, где вы использовали imageNamed, и отлаживаете строку, в которой вы найдете предупреждение.
Я только что исправил эту ошибку. Просто проверьте использование функции [UIImage imageNamed:(NSString*) imageName]. Если imageName - nil, тогда возникает ошибка.
Причиной ошибки является передача значения nil методу imageNamed:. Чтобы этого избежать, вы можете скрыть свой imageView при попытке передать значение nil. Вероятность может возникнуть при повторном использовании imageViews в UITableView или может быть в scrollViews.
Я избегал предупреждения с помощью следующей проверки:
UIImageView *your_image_view;
NSString *imageName;
if(imageName && imageName.length){
 your_image_view.hidden = NO;
 your_image_view.image = [UIImage imageNamed:imageName];
}
else {
 your_image_view.hidden = YES;
}
		Я получил это предупреждение при загрузке образа [[UIImage imageNamed:normalStr] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal], чем, я перехожу на [UIImage imageNamed:normalStr], предупреждение не прошло.
Один из подходов - это метод класса swizzling, чтобы заменить [UIImage imageNamed:] на вашу собственную реализацию, а затем проверить имя изображения в вашей реализации. См. Следующее:
Как подменить метод класса в iOS?
Я реализовал это в своей категории UIImage (Debug):
+ (UIImage *)db_imageNamed:(NSString *)imageName {
    if ([imageName length] == 0) {
        NSLog(@"breakpoint here");
    }
    return [self db_imageNamed:imageName];  // not a recursive call here after swizzling
}
Возможно, вы захотите также swizzle [UIImage imageNamed:inBundle:compatibleWithTraitCollection:].
Вы поставляете какое-то недопустимое имя изображения, поэтому перед его установкой нужно проверить, что вы можете использовать любой из вышеперечисленных способов, какой смысл имеет смысл для вашего кода или как
if (iconImageName && [iconImageName length])
{
    [UIImage imageNamed:iconImageName];
}
else
{
     iconImageName.hidden = YES;
}
Надеюсь, это поможет!!!!
Может быть, вы можете использовать это, чтобы подтвердить, что "imageName" не является "нолем", а затем вы оставите это предупреждение.
 if (imageName) {
    self.imageView.image = [UIImage imageNamed:imageName];
 }