我想在Objective-C中編寫一個函數,例如下面的函數,它接受可變數量的參數,並將這些參數傳遞給+stringWithFormat:
。我知道vsnprintf
,但這意味着將NSString的'格式'轉換爲C並返回(並且也意味着轉換其中的格式化佔位符以及...)。下面如何將可變數量的參數「傳遞」到NSString的+ stringWithFormat:
代碼編譯,但當然不表現爲我想:)
NSString *estr(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *s = [NSString stringWithFormat:format, args];
va_end(args);
return s;
}
基本上:是那裏的+stringWithFormat:
方法的va_list
- 友好的版本,或者是有可能寫一個?
只是爲了證明這不僅僅是一個玩具的例子,我很樂意在這裏也使用這種方法:http://cocoaheads.byu.edu/wiki/different-nslog – 2009-09-14 22:52:34
是的! NSLog過於健談,有時難以閱讀。我想到的是一種非常簡單的國際化我的應用程序的方式...我想寫一些類似tr(@「無法打開文件%@」,filePath);例如,並且在開發的早期階段將其簡單地返回(正確格式化),然後再有一個工具可以找到所有的tr()調用,從它找到的調用中爲翻譯創建所需的資源文件,那麼稍後我只需要翻開一個開關,而tr()調用實際上會查找並翻譯它們傳遞的消息...... – 2009-09-19 19:10:09