通过添加两个NSStrings来创建文件名

时间:2011-05-01 06:21:54

标签: iphone objective-c cocoa-touch

我正在尝试加载文件。文件名取决于存储在数组中的字符串。在以下示例中,我想加载tabRed.png。 @“Red”存储在一个数组中。

这就是我的尝试:

UIImage *tabImage = [UIImage imageNamed:(@"tab%@.png", [self.currentNoteBook.tabColours objectAtIndex:0])];

但我只输出“Red”作为输出而不是“tabRed.png”。我做错了什么?

2 个答案:

答案 0 :(得分:3)

UIImage *tabImage = [UIImage imageNamed:[NSString stringWithFormat:@"tab%@.png", [self.currentNoteBook.tabColours objectAtIndex:0]]];

您需要使用NSString stringWithFormat。逗号运算符(,)完全不同。

来自Wikipedia

  

在C和C ++编程语言中,逗号运算符(由标记,表示)是一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回该值(和类型)。

因此,当您编写(@"tab%@.png", [self.currentNoteBook.tabColours objectAtIndex:0])时,它实际上会丢弃第一个字符串并返回数组中仅为“红色”的对象。

答案 1 :(得分:1)

您需要为文件名创建一个新的NSString。字符串@“tab%@。png”不会自动替换占位符。使用-stringWithFormat:如下:

UIImage *tabImage = [UIImage imageNamed:[NSString stringWithFormat:@"tab%@.png", [self.currentNoteBook.tabColours objectAtIndex:0]]];