Xcode 提示CUICatalog:Invalid asset name supplied:'' 是+[UIImage imageNamed:]调用的时候, name为@""导致的,而CUICatalog:Invalid asset name supplied:'(null)'是name为nil导致的。
解决思路:只要找到项目调用[UIImage imageNamed:]的地方进行修改就可以解决,在项目中一个一个找显然很浪费时间。
解决方案:一、breakpoint
1.首先要添加Symbolic Breakpoint ,选择Add Symbolic Breakpoint
2.在Symbol填入+[UIImage imageNamed:] ,Condition填入[(NSString *)$arg3 length] == 0
3.运行项目,当运行到调用imageName方法并且name.length == 0时,就会出现堆栈信息,然后根据堆栈信息就会查找到对应位置的参数是nil或者@"",然后做出相应改正就行。
二、单纯的想去掉这个日志可以用runtime解决,利用方法替换,做出相应的策略代码如下:
+(void)load{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[NSObject zpDefenderSwizzlingClassMethod:@selector(imageNamed:)
withMethod:@selector(zp_none_imageNamed:)
class:[UIImage class]];
});
}
+(id)zp_none_imageNamed:(NSString *)name{
if (name.length) {
return [UIImage zp_none_imageNamed:name];
}
return nil;
}
其中zpDefenderSwizzlingClassMethod是自己封装的方法替换代码,可自行网上查找。
如有错误,请大家留言指正,谢谢