2016-03-23 10 views
0

Ich habe eine Hilfsmethode, die URL aus einer Konfiguration erstellt. Die Config enthält die URLs mit Platzhaltern, die zur Laufzeit ersetzt werden müssen. Da das Zeichenfolgenformat für %s nicht richtig funktioniert, dachte ich an eine verzögerte Interpolation, bei der ich die Zeichenfolge nur dann konstruieren sollte, wenn das Objekt verfügbar ist.Wie verzögert man die String-Interpolation in swift?

Zum Beispiel, wenn ich eine Zeichenfolge haben:

var str = http://localhost/entitylist/\(obj.key2)/entity/\(obj.key1) 

Ich möchte so etwas wie method1(str, obj) tun, die mir den interpolierten Wert geben sollte.

Kein Zweifel, ich es mit str.stringByReplacingOccurrencesOfString erreichen kann, wollte ich noch wissen, ob es eine bessere Art und Weise ist, es zu tun

+0

Die Frage ist unklar. Bitte geben Sie die tatsächliche Eingabe und die gewünschte Ausgabe an. – matt

+0

'var str =" http: // localhost/entity-Liste /% s/entity /% s " var Ausgabe = String (Format: str, Argumente: [" foo "," bar "])' die Ausgabe ist " http: // localhost/entitylist // entity/" –

+2

Für Swift-Strings verwenden Sie'% @ ': http://StackOverflow.com/questions/27171178/how-to-use-string-object-in-the-string- Format-Klassen-Methode. –

Antwort

1

Wie von Martin R im Kommentar erwähnt, %@ verwendet, ist der richtige Weg, es

zu tun
var str = "http://localhost/entitylist/%@/entity/%@" 

String(format: str, arguments: ["foo", "bar"]) 
1

Verwenden Sie keine Formatzeichenfolge, wie Sie es tun. Es gibt NSString und NSURL und verwandte Methoden, um eine URL richtig zu bilden:

Verwandte Themen