stack = [NSString stringWithFormat:@"%[email protected]%2$d", stack, number];
我跟着Xcode計算器教程,我不太確定%[email protected]%2$d
代表什麼。請指導我。
stack = [NSString stringWithFormat:@"%[email protected]%2$d", stack, number];
我跟着Xcode計算器教程,我不太確定%[email protected]%2$d
代表什麼。請指導我。
[NSString stringWithFormat:@"%[email protected]%2$d", stack, number];
邏輯上分解爲意味着你想要一個字符串(你可以從格式的字符串中獲得),顯示兩個項目(你可以從字符串之後的項目和格式中的%符號數量中看到它。
%1 $ @%2 $ d是兩個項目,你可以用%,%1和%2分別表示第一個和第二個項目。
%1 $ @ - @表示時便會翻譯成字符串
%2 $ d的對象 - d表示十進制。
不確定爲什麼這個問題還沒有關閉。或爲什麼人們不喜歡我的答案。 – nycynik
%@
說參數是一個Objective-C對象,它發送一個描述選擇器來獲取將被插入到最終字符串中的字符串。
%[email protected]
說同樣的事情,但指定第一個參數。
%d
是一個有符號的32位整數。
%2$d
指定第二個參數是一個有符號的32位整數。
我假設你知道%@
和%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.
[文檔](https://developer.apple.com/library/prerelease/mac/documentation/Cocoa/Conceptual/Strings/Articles/ formatSpecifiers.html#// apple_ref/doc/uid/TP40004265-SW1) –