Ich möchte eine Funktion in Objective-C wie der unten schreiben, die eine variable Anzahl von Argumenten nimmt und diese Argumente weitergibt an +stringWithFormat:
. Ich weiß über vsnprintf
, aber das würde bedeuten, das NSString-Format in C und zurück zu konvertieren (und würde auch bedeuten, die Formatierungs-Platzhalter darin zu konvertieren ...).Wie man eine variable Anzahl von Argumenten an NSString + stringWithFormat "weitergibt":
Der folgende Code kompiliert, aber natürlich nicht so tun, als ich :) will
NSString *estr(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *s = [NSString stringWithFormat:format, args];
va_end(args);
return s;
}
Grundsätzlich: Gibt es eine va_list
-friendly Version der +stringWithFormat:
Methode oder ist es möglich, einen zu schreiben?
Nur um zu zeigen, dass dieses Beispiel nicht nur ein Spielzeug ist, würde ich gerne zu Verwenden Sie eine solche Methode auch hier: http://cocoaeheads.byu.edu/wiki/different-nslog –
Ja, in der Tat! NSLog ist viel zu gesprächig, macht es manchmal schwer zu lesen. Was ich im Sinn hatte, ist eine sehr einfache Möglichkeit, meine Apps zu internationalisieren ... Ich möchte etwas wie tr schreiben (@ "Datei% @ nicht öffnen", filePath); Zum Beispiel, und dies muss einfach zurückgegeben werden wie es ist (richtig formatiert) in frühen Stadien der Entwicklung, dann später ein Werkzeug haben, das alle tr() Aufrufe findet, erstellt die benötigten Ressourcendateien für Übersetzungen aus den gefundenen Aufrufen, später schalte ich einfach einen Schalter um und die tr() - Aufrufe suchen und übersetzen die Nachrichten, die sie übergeben haben ... –