错误:CUICatalog:提供的资产名称无效:( null)或无效比例因子:2.000000

man*_*ngh 106 objective-c ios xcode5

TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
Run Code Online (Sandbox Code Playgroud)

截图添加

使用TableViewController时获取此警告.如何纠正此错误以及哪个块受到影响?

tt.*_*lew 207

当有人试图投入时nil,会出现这个[UIImage imageNamed:]

添加符号断点 [UIImage imageNamed:]符号断点的例子

$arg3 == nil在Simulator $r0 == nil上添加条件,在32位iPhone或$x2 == nil64位iPhone上添加条件.

运行您的应用程序,看看调试器将停止的位置.

PS请记住,如果图像名称为空字符串,也会发生这种情况.您可以通过添加[(NSString*)$x2 length] == 0条件来检查这一点.

  • 我不知道条件断点的`$ arg3`语法.我在哪里可以了解更多? (8认同)
  • 这是一个聪明的方法.看起来我的nil图像在我的笔尖中的某个地方,所以它不会通过`UIImage imageNamed:`,但我仍然保存这个断点. (6认同)
  • https://www.clarkcox.com/blog/2009/02/04/inspecting-obj-c-parameters-in-gdb/ (6认同)
  • 在我的情况下,图像名称字符串是空的,因此检查arg3长度对我有用.`(int)[$ arg3 length] == 0` (6认同)
  • 我一直得到:由于错误评估断点23.1的条件而停止:"$ r0 == nil"无法解析条件表达式:错误:使用未声明的标识符'$ r0'错误:1错误解析表达式 (5认同)
  • 不确定为什么它对我不起作用,总是返回```错误:使用未声明的标识符'$ arg3'```.我错过了什么? (3认同)
  • 如果您在查找正确的寄存器时遇到困难,请创建没有条件的断点,然后在lldb中运行以下`register read -fd`。浏览打印的寄存器以查看其中包含图像名称的寄存器,然后在断点条件下使用该寄存器。 (2认同)

Fab*_*bio 58

当您尝试加载图像时会发生此错误(通常),[UIImage imageNamed:myImage]但iOS不确定是否myImage真的是NSString,然后您有此警告.

您可以使用以下方法修复此

[UIImage imageNamed:[NSString stringWithFormat:@"%@", myImage]]
Run Code Online (Sandbox Code Playgroud)

或者您只需检查以下length名称UIImage:

if (myImage && [myImage length]) {

    [UIImage imageNamed:myImage];
}
Run Code Online (Sandbox Code Playgroud)

  • 如果有人犯了和我一样的错误,我试图更新要删除的 UIButton 的背景图像(根本没有图像),因此我将 UIImage 名称从字符串更改为仅“”,这导致了错误。通过删除整个 UIImage(named: "") 并将其替换为 nil,错误消失了。 (2认同)

rob*_*cer 21

由于错误是抱怨您提供的名称(null),这很可能是由调用引起的[UIImage imageNamed:nil].或者更具体地说,传入一个变量尚未设置,所以它等于nil.虽然使用stringWithFormat:将摆脱错误,我认为它很可能实际上没有做你想要的.如果您提供的名称是一个nil值,那么使用stringWithFormat:将导致它查找一个字面上命名为"(null)"的图像,就像您正在调用一样[UIImage imageNamed:@"(null)"].

这样的事情可能是更好的选择:

if (name) {
    UIImage *image = [UIImage imageNamed:name];
} else {
    // Do something else
}
Run Code Online (Sandbox Code Playgroud)

您可能希望在Xcode上的"Do something else"行中设置断点,以帮助您找出为什么首先使用nil值调用此代码.


小智 17

在Xcode 6.4中,当使用"选定图像"作为故事板中的标签栏项目时,即使它是有效图像,也会出现这种情况.

在此输入图像描述

实际上,这似乎无法设置所选的状态图像,因此需要在用户定义的运行时属性中定义,并从Tab Bar项的SelectedImage属性中删除

在此输入图像描述


Rah*_*hur 5

就我而言,我传递了 [UIImage imageNamed:@""] 这导致我显示警告。只需将断点添加到使用 imageNamed 的所有行并调试发现警告的行即可。