我有一個可變參數函數運行的第一個參數一些代碼,然後運行NSString
initWithFormat:arguments:
之後,如果參數已經被通過可變參數功能:檢查數量的參數
+ (NSString *)updatedString:(NSString *)mainString, ...
{
// Some code run on mainString here, outputs finalString
// add format arguments to the final string
va_list args;
va_start(args, mainString);
NSString *formattedString = [[NSString alloc] initWithFormat:finalString arguments:args];
va_end(args);
return formattedString;
}
編輯:的想法在mainString上運行的代碼使用正則表達式來查找和替換文本中的變量。所以說輸出(finalString
)等於"Hello World %@ blah blah %@"
,那麼它將使用參數來替換%@
符號。問題是我不知道解析的字符串是否包含%@
符號,直到字符串解析。
所以,我需要檢查是否實際上有任何額外的參數,如果沒有,我不想運行initiWithFormat
部分。
有什麼辦法可以檢查args
是否先存在?
爲什麼你需要檢查?只要格式字符串沒有格式說明符,即使沒有更多參數,也可以調用'initWithFormat'。 – rmaddy
是否有一個原因,你不能修改updatedString方法,所以你可以顯式傳遞可變參數的數量? – ericg
請解釋你正在努力達到的目標。因爲現在你的代碼看起來完全錯了。可能通過NSArray參數傳遞參數將更適合你。 –