C# tiene una sintaxis que le permite especificar el índice de argumento en un especificador de formato de cadena, por ejemplo .:¿Hay alguna forma de especificar la posición/índice del argumento en NSString stringWithFormat?
string message = string.Format("Hello, {0}. You are {1} years old. How does it feel to be {1}?", name, age);
Puede utilizar argumentos más de una vez, y también omitir los argumentos que se proporcionan de ser utilizado. Another question menciona el mismo formato para C/C++ en forma de %[index]$[format]
, p. Ej. %1$i
. No he podido obtener NSString a totalmente respecto a esta sintaxis, porque se comporta bien cuando omite los argumentos del formato. El siguiente no funciona como se esperaba (EXC_BAD_ACCESS porque intenta eliminar la referencia al parámetro age
como NSObject *):
int age = 23;
NSString * name = @"Joe";
NSString * message = [NSString stringWithFormat:@"Age: %2$i", name, age];
Los argumentos posicionales son respetados sólo si no hay argumentos que faltan en el formato (que parece ser un requisito impar):
NSString * message = [NSString stringWithFormat:@"Age: %2$i; Name: %[email protected]", name, age];
Todas estas llamadas funciona correctamente en OS X:
printf("Age: %2$i", [name UTF8String], age);
printf("Age: %2$i %1$s", [name UTF8String], age);
¿hay una manera de accomplishin g esto usando NSString en Objective-C/Cocoa? Sería útil para fines de localización.
Presente un informe de error (y avísenos el error #). –