stack = [NSString stringWithFormat:@"%1$@%2$d", stack, number];
我正在关注Xcode计算器教程,我不太确定%1$@%2$d
代表什么。请指导我。
答案 0 :(得分:2)
%@
表示该参数是一个Objective-C对象,它发送一个描述选择器来获取将插入到最终字符串中的字符串。
%1$@
说同样的话,但指定了第一个参数。
%d
是一个带符号的32位整数。
%2$d
指定第二个参数是带符号的32位整数。
答案 1 :(得分:1)
此格式用于显式选择应在字符串中替换哪个参数,因此1$
用于第一个参数,2$
用于第二个等...
'@'
用于ObjC对象(通常显示对象的描述),'d'
用于整数
在这种情况下,它也可以简单地写成:
stack = [NSString stringWithFormat:@"%@%d", stack, number];
答案 2 :(得分:0)
我假设您知道%@
和%d
的含义。默认情况下,第一个说明符(例如%@
)将替换为参数列表中第一个参数的值,依此类推。但是,n$
使您能够指定要使用其值来替换包含n$
的说明符的位置的参数。
事实上,一个简单的例子更加清晰:
NSString *aString = @"ultimate answer";
int anInteger = 42;
NSLog(@"The %@ is %d.", aString, anInteger); // The ultimate answer is 42.
NSLog(@"The %1$@ is %2$d.", aString, anInteger); // The ultimate answer is 42.
NSLog(@"%2$d is the %1$@.", aString, anInteger); // 42 is the ultimate answer.
答案 3 :(得分:-2)
[NSString stringWithFormat:@"%1$@%2$d", stack, number];
逻辑分解意味着你想要一个字符串(你从格式的字符串中得到它),显示两个项目(你可以从字符串后面的项目中看到它,以及格式中%符号的数量。
%1 $ @%2 $ d是两个项目,您可以按%,%1和%2分辨第一个和第二个。
%1 $ @ - @表示将被翻译为字符串的对象
%2 $ d - d代表小数。