447 Stimmen

Wie konvertiere ich ein Swift-Array in einen String?

Ich weiß, wie man es programmatisch macht, aber ich bin mir sicher, dass es einen eingebauten Weg gibt...

Jede Sprache, die ich benutzt habe, hat irgendeine Art von Standard-Textdarstellung für eine Sammlung von Objekten, die sie ausspuckt, wenn man versucht, das Array mit einem String zu verketten oder es an eine print() Funktion zu übergeben, usw. Hat die Swift-Sprache von Apple einen eingebauten Weg, ein Array leicht in einen String umzuwandeln, oder müssen wir immer explizit sein, wenn wir ein Array in einen String umwandeln?

2voto

Alexey Chekanov Punkte 1087

Ein Separator kann für einige Sprachen wie Hebräisch oder Japanisch keine gute Idee sein. Versuche dies:

// Array von Strings
let array: [String] = ["rot", "grün", "blau"]
let arrayAsString: String = array.description
let stringAsData = arrayAsString.data(using: String.Encoding.utf16)
let arrayBack: [String] = try! JSONDecoder().decode([String].self, from: stringAsData!)

Für andere Datentypen entsprechend:

// Set von Doubles
let set: Set = [1, 2.0, 3]
let setAsString: String = set.description
let setStringAsData = setAsString.data(using: String.Encoding.utf16)
let setBack: Set = try! JSONDecoder().decode(Set.self, from: setStringAsData!)

1voto

Erstellen Sie eine Erweiterung für ein Array:

extension Array {

    var string: String? {

        do {

            let data = try JSONSerialization.data(withJSONObject: self, options: [.prettyPrinted])

            return String(data: data, encoding: .utf8)

        } catch {

            return nil
        }
    }
}

1voto

Wenn Sie eine String-Array-Liste haben, konvertieren Sie sie in Int.

let arrayList = list.map { Int($0)!} 
     arrayList.description

Es wird Ihnen den String-Wert geben.

1voto

123FLO321 Punkte 862

Sie können jedes Objekt mit der Druckfunktion ausdrucken

oder verwenden Sie \(name), um jedes Objekt in einen String zu konvertieren.

Beispiel:

let array = [1,2,3,4]

print(array) // gibt "[1,2,3,4]" aus

let string = "\(array)" // string == "[1,2,3,4]"
print(string) // gibt "[1,2,3,4]" aus

1voto

Rob Napier Punkte 265102

Das Swift-Äquivalent zu dem, was Sie beschreiben, ist die Zeichenketteninterpolation. Wenn Sie über Dinge wie JavaScript nachdenken, die "x" + array ausführen, entspricht dies in Swift "x\(array)".

Als allgemeine Anmerkung gibt es einen wichtigen Unterschied zwischen Zeichenketteninterpolation und dem Printable Protokoll. Nur bestimmte Klassen entsprechen dem Printable. Jede Klasse kann irgendwie in eine Zeichenkette interpoliert werden. Das ist hilfreich beim Schreiben generischer Funktionen. Sie müssen sich nicht auf Printable Klassen beschränken.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X