我正在尝试加载文件。文件名取决于存储在数组中的字符串。在以下示例中,我想加载tabRed.png。 @“Red”存储在一个数组中。
这就是我的尝试:
UIImage *tabImage = [UIImage imageNamed:(@"tab%@.png", [self.currentNoteBook.tabColours objectAtIndex:0])];
但我只输出“Red”作为输出而不是“tabRed.png”。我做错了什么?
答案 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]]];