Mi piacerebbe scrivere una funzione in Objective-C come quella seguente, che accetta un numero variabile di argomenti e passa quegli argomenti a +stringWithFormat:
. So di vsnprintf
, ma ciò implicherebbe la conversione del formato 'NSString' in C e ritorno (e significherebbe anche la conversione dei segnaposto di formattazione all'interno di esso ...).Come "passare" un numero variabile di argomenti a NSString's + stringWithFormat:
Il codice di seguito viene compilato, ma naturalmente non si comporta come voglio :)
NSString *estr(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *s = [NSString stringWithFormat:format, args];
va_end(args);
return s;
}
In sostanza: esiste una versione va_list
-friendly del metodo +stringWithFormat:
, o è possibile scrivere uno?
Giusto per dimostrare che questo non è solo un esempio di giocattolo, mi piacerebbe usa anche questo metodo qui: http://cocoaheads.byu.edu/wiki/different-nslog –
Sì, certo! NSLog è troppo chiacchierone, a volte rende difficile la lettura. Quello che avevo in mente è un modo molto semplice di internazionalizzare le mie app ... Voglio scrivere qualcosa come tr (@ "Impossibile aprire il file% @", filePath); per esempio, e questo deve essere semplicemente restituito così com'è (formattato correttamente) nelle prime fasi di sviluppo, poi in seguito avere uno strumento che trova tutte le chiamate tr(), crea i file di risorse necessari per le traduzioni dalle chiamate trovate, poi più avanti cambio semplicemente un interruttore e le chiamate tr() effettivamente effettuano la ricerca e traducono i messaggi che hanno passato ... –