1

下面的代码在 NSLog 中得到了我想要的结果,但必须有更简单的方法来做到这一点?我还收到“格式字符串不是字符串文字”错误,但仍然可以正常运行。

NSString *levelstring1 = @"Level ";
NSString *levelstring2 = [NSString stringWithFormat:@"%d", levelscore];
NSString *levelstring3 = @" (";
NSString *levelstring4 = [NSString stringWithFormat:@"%d", xpscore];
NSString *levelstring5 = @"/";
NSString *levelstring6 = [NSString stringWithFormat:@"%d", (levelscore*(levelscore+1)*100)];
NSString *levelstring7 = @")";

NSString *levelstringfinal = [[[[[[levelstring1 stringByAppendingFormat:levelstring2]stringByAppendingFormat:levelstring3]stringByAppendingFormat:levelstring4]stringByAppendingFormat:levelstring5]stringByAppendingFormat:levelstring6]stringByAppendingFormat:levelstring7];

NSLog(@"Level is %@",levelstringfinal);

最终结果如下所示:级别 1 (50/100)。

4

1 回答 1

3

您可以将它们组合成如下内容:

NSString *levelstringfinal = [NSString stringWithFormat:@"Level %d (%d/%d)", levelscore, xpscore, (levelscore*(levelscore+1)*100)];

您收到的警告是因为编译器无法检查变量的内容,而使用字符串文字它可以匹配占位符和变量以实现某种程度的一致性。

(即使您必须分段构建字符串,使用最后一行会更好,stringByAppendingString而不是stringByAppendingFormat因为它们不再是格式说明符。)

于 2012-12-03T14:30:05.743 回答