2015-04-12 109 views
-3
stack = [NSString stringWithFormat:@"%[email protected]%2$d", stack, number]; 

我跟着Xcode計算器教程,我不太確定%[email protected]%2$d代表什麼。請指導我。

+2

[文檔](https://developer.apple.com/library/prerelease/mac/documentation/Cocoa/Conceptual/Strings/Articles/ formatSpecifiers.html#// apple_ref/doc/uid/TP40004265-SW1) –

回答

1

這種格式是用來明確選擇哪個參數應在字符串中被替換所以1$是第一個參數,2$爲第二等...

'@'是ObjC對象(一般裏顯示對象的描述),並'd'是整數

在這種情況下,它也可以簡單地寫成:

stack = [NSString stringWithFormat:@"%@%d", stack, number]; 
+0

但是,它不是'$ 1',它是'1 $' – Logan

+0

我的錯誤已被更正。 – giorashc

+3

:) - 一定會做得太快! – Logan

-2
[NSString stringWithFormat:@"%[email protected]%2$d", stack, number]; 

邏輯上分解爲意味着你想要一個字符串(你可以從格式的字符串中獲得),顯示兩個項目(你可以從字符串之後的項目和格式中的%符號數量中看到它。

%1 $ @%2 $ d是兩個項目,你可以用%,%1和%2分別表示第一個和第二個項目。

%1 $ @ - @表示時便會翻譯成字符串

%2 $ d的對象 - d表示十進制。

+0

不確定爲什麼這個問題還沒有關閉。或爲什麼人們不喜歡我的答案。 – nycynik

2

%@說參數是一個Objective-C對象,它發送一個描述選擇器來獲取將被插入到最終字符串中的字符串。

%[email protected]說同樣的事情,但指定第一個參數。

%d是一個有符號的32位整數。

%2$d指定第二個參數是一個有符號的32位整數。

0

我假設你知道%@%d的含義。默認情況下,第一個說明符(如%@)將被參數列表中第一個參數的值替換,依此類推。但是,n$使您能夠指定要在哪個位置使用其值來替換包含n$的說明符的參數。

事實上,一個簡單的例子是更清晰:

NSString *aString = @"ultimate answer"; 
int anInteger = 42; 
NSLog(@"The %@ is %d.", aString, anInteger); // The ultimate answer is 42. 
NSLog(@"The %[email protected] is %2$d.", aString, anInteger); // The ultimate answer is 42. 
NSLog(@"%2$d is the %[email protected]", aString, anInteger); // 42 is the ultimate answer.