我一直在使用格式说明符,但它们是通用的%d
或%@
,但今天在教程中我看到了这些%1$@%2$d
并且不明白它们代表什么。<这是一个计算器示例,因此他们在此声明中使用它们:stack = [NSString stringWithFormat:@"%1$@%2$d",stack,number];
答案 0 :(得分:11)
数字代表位置参数。格式字符串后面的参数根据它们在参数列表中的位置插入字符串。第一个参数进入%1插槽,第二个参数进入%2插槽,依此类推。目的是处理术语/单词/等的顺序可能会从默认值更改的语言。您无法在运行时更改参数顺序,但可以确保参数最终位于字符串中的正确位置。
示例强>
.theInput {
-webkit-appearance: none;
-moz-appearance: none;
text-overflow: ellipsis;
color: #333333;
outline: none;
border: 1px solid #E4EBED;
border-radius: 3px;
width: 70px;
height: 32px;
line-height: 25px;
font-size: 16px;
vertical-align: middle;
background-color: #fff;
padding-left:45px;
}
.theLabel {
position:absolute;
z-index:999;
-webkit-appearance: none;
-moz-appearance: none;
color: #333333;
outline: none;
width: 34px;
height: 32px;
line-height: 30px;
font-size: 20px;
background-color: #fff;
margin-left:-106px;
font-weight: bold;
cursor:default;
}
输出
NSLog(@"%1$@, %2$@", @"Red", @"Blue");
NSLog(@"%2$@, %1$@", @"Red", @"Blue");
请注意,格式字符串已更改,但参数的顺序相同。
答案 1 :(得分:0)
因此,格式说明符%1 $ @%2 $ d 表示:
%1 $ @ 用于%@ (目标C对象)的第一个参数和
%2 $ d 表示%d * (带符号的32位整数(int))*,带有第二个参数。
此$ 0,$ 1,$ 2是速记参数名称,如在Closures中
“ Swift会为内联闭包自动提供速记参数名称,可使用$ 0,$ 1,$ 2等名称来引用闭包参数的值。”