Objective c 我如何纠正这个';不兼容的Obj-c类型';警告

Objective c 我如何纠正这个';不兼容的Obj-c类型';警告,objective-c,nsstring,uiimage,incompatibletypeerror,Objective C,Nsstring,Uiimage,Incompatibletypeerror,具体而言,警告是:“当从不同的Objective-C类型传递参数4“objectWithType:name:code:image”时,不兼容的Objective-C类型为“struct NSString*”,应为“struct UIImage*”。它遵循一条看起来是这样的线: [Object objectWithType:@"Type" name:@"Name" code:@"0001" image:@"image.png"], 因此,我知道我创建了类对象来获取UIImage类型,但我为它提供

具体而言,警告是:“当从不同的Objective-C类型传递参数4“objectWithType:name:code:image”时,不兼容的Objective-C类型为“struct NSString*”,应为“struct UIImage*”。它遵循一条看起来是这样的线:

[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:@"image.png"],
因此,我知道我创建了类
对象
来获取UIImage类型,但我为它提供了NSString类型。问题是:我不知道如何以不同于文件名的方式表示图像


(如果这是一个基本问题,我深表歉意。我不熟悉这一点,并试图在这里发布之前寻找解决方案。感谢您提供的任何帮助。)

使用[UIImage ImageName:]。将仅适用于作为项目一部分的图像

[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:[UIImage imageNamed:@"image.png"]]

实际上,您需要一个
UIImage
的实例,您可以理解它。因此,类方法
imageNamed:
通常用于:

[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:[UIImage imageNamed:@"image.png"]];
[Object objectWithType:@"Type" name:@"Name" code:@"0001" image:[UIImage imageNamed:@"image.png"]];
另一个选项(因为您在这里使用的是所有字符串)可能是重写方法,使其采用名称而不是图像,然后在方法实现中创建图像。因此,您可以定义该方法:

- (void)objectWithType:(NSString*)type name:(NSString*)name code:(NSString*)code imageName:(NSString*)imageName
{
  UIImage* theImage = [UIImage imageNamed:imageName];
  // do whatever
}

如果项目包中包含“image.png”,则可以通过此操作传递UIImage而不是NSString: