我们需要格式化一个字符串,但对于某些本地化,我们不会输出所有参数。但似乎输出的参数比传递的参数少是行不通的:
NSString *string = [NSString stringWithFormat: @"%2$@", @"<1111>", @"<22222>"];
NSLog(@"String = %@", string);
输出
String = <1111>
尽管我输出了第二个参数。这是bug还是功能?
根据相关行业标准,IEEE规范:
使用带编号的参数规范时,指定第N个参数需要在格式字符串中指定从第一个到第(N-1)个的所有前导参数。
也就是说,在寻址使用第二个参数之前,必须在字符串格式化程序中的某个位置使用第一个%1$@
参数,因此,这根本不是一个错误。