मैं उद्देश्य-सी में एक फ़ंक्शन लिखना चाहता हूं जैसे नीचे दिया गया है, जो तर्कों की एक चर संख्या लेता है, और उन तर्कों को पास करता है +stringWithFormat:
। मुझे vsnprintf
के बारे में पता है, लेकिन इससे एनएसएसटींग 'प्रारूप' को सी और बैक में परिवर्तित करने का अर्थ होगा (और इसका मतलब यह भी होगा कि इसके भीतर स्वरूपण प्लेसहोल्डर्स को भी परिवर्तित करना ...)।NSString's + 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 –
हां वास्तव में! एनएसएलओजी बहुत चतुर तरीका है, कभी-कभी इसे पढ़ने में मुश्किल होती है। मेरे मन में जो कुछ भी था, वह मेरे ऐप्स को अंतर्राष्ट्रीयकरण का एक बहुत ही आसान तरीका है ... मैं कुछ जैसे लिखना चाहता हूं (@ "फ़ाइल% @ नहीं खोल सकता", फ़ाइलपैथ); उदाहरण के लिए, और इसे विकास के शुरुआती चरणों में बस (ठीक से स्वरूपित) के रूप में वापस किया जाना चाहिए, उसके बाद बाद में एक उपकरण है जो सभी tr() कॉल पाता है, जो आवश्यक कॉलों के अनुवादों के लिए आवश्यक संसाधन फ़ाइलों को बनाता है, फिर बाद में मैं सिर्फ एक स्विच फ्लिप करता हूं और tr() कॉल वास्तव में लुकअप करते हैं और उनके द्वारा पारित संदेशों का अनुवाद करते हैं ... –