如何更正此“不兼容的对象类型”警告?

时间:2010-11-10 03:40:47

标签: objective-c nsstring uiimage incompatibletypeerror

具体来说,警告是:“不兼容的Objective-C类型'struct NSString *',当传递'objectWithType:name:image'来自不同的Objective-C类型”的参数4时,预期'struct UIImage *'。它遵循一条看起来如此的线:

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

所以,我知道我创建了类Object以获取类型UIImage,但我提供的类型为NSString。这是问题所在:我不知道如何以不同于文件名的方式指示图像。

(如果这是一个基本问题,请道歉。我是新手,并且在发布此处之前尝试寻找解决方案。感谢您提供的任何帮助。)

3 个答案:

答案 0 :(得分:1)

您实际上需要一个UIImage的实例,您明白这一点。因此,类方法imageNamed:通常用于此:

[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
}

答案 1 :(得分:0)

使用[UIImage imageNamed:]。仅适用于属于项目的图像。

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

答案 2 :(得分:0)

如果你的项目包中包含'image.png',那么你可以这样做来传递UIImage而不是NSString:

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