2014-10-14 43 views
23

Per test e debug, sto cercando di mettere il contenuto del dizionario in una stringa. Ma non ho idea di come andrà a finire. È possibile? Se sì, come.Converti dizionario Swift in stringa

Il dizionario viene prelevato dal servizio Web, quindi non ho idea dei valori chiave che ha. Voglio usare i dati nell'app.

In Objective C% @ è stato sufficiente per memorizzare qualcosa in NSString.

+0

% @ su un oggetto, semplicemente chiama il metodo descrizione. Quindi puoi semplicemente fare myDict.description per ottenere una stringa. – Tim

risposta

62

Basta utilizzare la proprietà description di CustomStringConvertible as

Example:

Nota: prima di Swift 3 (o forse prima), CustomStringConvertible era noto come Printable.

+1

questo è esattamente quello che stavo cercando. println non può essere assegnato all'oggetto - String nel mio caso. (Y) – khunshan

+1

Bello, ha funzionato perfettamente. – Alwin

0

Si può solo stampare un dizionario direttamente senza incorporarlo in una stringa:

let dict = ["foo": "bar", "answer": "42"] 

println(dict) 
// [foo: bar, answer: 42] 

Oppure si può incorporare in una stringa come questa:

let dict = ["foo": "bar", "answer": "42"] 

println("dict has \(dict.count) items: \(dict)") 
    // dict has 2 items: [foo: bar, answer: 42] 
9

dizionario di stringa con formato personalizzato:

let dic = ["key1":"value1", "key2":"value2"] 

let cookieHeader = (dic.flatMap({ (key, value) -> String in 
    return "\(key)=\(value)" 
}) as Array).joined(separator: ";") 

print(cookieHeader) // key2=value2;key1=value1 
+0

funzionerà se il valore nel dizionario non è string: string ed è stringa: array. – khunshan

+0

"\ (chiave) = \ (valore)" sta chiamando la descrizione per conto tuo quindi il risultato sarebbe per esempio 'key = [" 1 "," 2 "," 3 "]'. Se vuoi qualcosa di diverso devi personalizzarti. – Jano

+0

parlando di utilizzo di flatMap – khunshan