stringWithFormat是什么:@"%1 $ @%2 $ d"做?

时间:2015-04-12 14:25:59

标签: objective-c

stack = [NSString stringWithFormat:@"%1$@%2$d", stack, number];

我正在关注Xcode计算器教程,我不太确定%1$@%2$d代表什么。请指导我。

4 个答案:

答案 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代表小数。