Me gustaría escribir una función en Objective-C como la de abajo, que toma un número variable de argumentos, y pasa esos argumentos a +stringWithFormat:
. Sé de vsnprintf
, pero eso implicaría convertir el 'formato' de NSString a C y viceversa (y también significaría convertir los marcadores de posición de formato dentro de él también ...).Cómo "transmitir" un número variable de argumentos a NSString's + stringWithFormat:
El siguiente código compila, pero por supuesto no se comporta como quiero :)
NSString *estr(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *s = [NSString stringWithFormat:format, args];
va_end(args);
return s;
}
Básicamente: ¿hay una versión -Friendly va_list
del método +stringWithFormat:
, o es posible escribir uno?
Sólo para demostrar que esto no es sólo un ejemplo de juguete, me encantaría use también este método aquí: http://cocoaheads.byu.edu/wiki/different-nslog –
¡Sí, de hecho! NSLog es demasiado hablador, hace que sea difícil de leer a veces. Lo que tenía en mente es una forma muy simple de internacionalizar mis aplicaciones ... Quiero escribir algo como tr (@ "No se puede abrir el archivo% @", filePath); por ejemplo, y haga que esto simplemente se devuelva tal como está (correctamente formateado) en las primeras etapas de desarrollo, y luego tenga una herramienta que encuentre todas las llamadas tr(), cree los archivos de recursos necesarios para las traducciones de las llamadas que encontró. luego, simplemente cambio un interruptor y las llamadas tr() realmente buscan y traducen los mensajes que se pasaron ... –