以下代码在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)。
答案 0 :(得分:3)
您可以将它们组合成以下内容:
NSString *levelstringfinal = [NSString stringWithFormat:@"Level %d (%d/%d)", levelscore, xpscore, (levelscore*(levelscore+1)*100)];
你得到的警告是因为编译器无法检查变量的内容,而使用字符串文字它可以匹配占位符和变量以达到某种程度的一致性。
(即使你必须分段构建字符串,最后一行使用stringByAppendingString
而不是stringByAppendingFormat
会更好,因为它们不再是格式说明符。)