2016-04-30 4 views
1

Ich habe ein Array, das in 2 Typen nimmt, einen String und ein Int sieht der Code wie soWie ein Array von int und Zeichenfolgen in einer String-Variablen in swift zuweisen?

var totalDoubleSet1Array = [(Dante,10), (Cassius, 9), (Rio, 5)] 
let sortedArray = totalDoubleSet1Array.sort { $0.1 > $1.1 } 

Ich benutze die Sortierfunktion dann, um mit dem die höchste Punktzahl zu ordnen (Int) mit dem niedrigsten Name daneben. (So ​​kann ich dies einer Zeichenkette zuweisen und in einer AlertAction anzeigen) Ich habe es irgendwo hier gesehen, dass ich ja ein Array eines einzelnen String-Typs oder Int usw. auf die Konsole drucken kann, aber wie kann ich dieses Array zuordnen 2 Arten (Stings und Ints) zu einer neuen Variable von String, so dass ich es in einer schnellen Benachrichtigung bitte einer AlertAction-Nachricht zuweisen kann? Oder noch besser, wie kann ich das einzelne Element eines jeden Eintrags greifen, um es einer Var-Zeichenfolge zuzuordnen? Hoffentlich macht das Sinn .. Danke

Antwort

3

Dies ist kein "Array von zwei Arten", es ist ein Array von Tupel. Sie können ein Element aus dem Array greifen und seine einzelnen Teile wie folgt nehmen:

let (name, score) = totalDoubleSet1Array[i] 

Nach dieser Zuordnung Sie zwei Variablen erhalten würde - name vom Typ String, die den Wert von i -te Element Namen hat, und score von Geben Sie Int ein, das den Wert i -s Element des Elements hat.

Wenn alles, was Sie brauchen, ist der Name, haben Sie zwei Möglichkeiten:

  • Sie let (name, _) = totalDoubleSet1Array[i] Syntax verwenden könnte, oder
  • Sie let name = totalDoubleSet1Array[i].1 stattdessen verwenden könnte.

Beachten Sie, dass Sie die zweite Syntax sind bereits im Vergleich Ausdruck Ihrer Sortierfunktion:

sort { $0.1 > $1.1 } 
+0

Danke dafür wird es versuchen und zurück zu dir .. Ich bin ein Anfänger in dieser Sprache und lerne und so danke für die Einsicht =) Super funktioniert es! – Charlie

2

Laut Apple-Tupel ist nicht die beste Wahl für Datenstrukturen ...

Warum nicht nur eine benutzerdefinierte Struktur mit

struct Player { 
    var name : String 
    var score : Int 
} 

let totalDoubleSet1Array = [Player(name:"Dante", score:10), Player(name:"Cassius", score:9), Player(name:"Rio", score:5)] 
let sortedArray = totalDoubleSet1Array.sort { $0.score > $1.score } 

Dann können Sie ganz einfach den Namen in einer Tabellenansicht zum Beispiel Zugriff auf

+0

Danke für die Einsicht, ich lerne diese Sprache und schaue hinein. Schätze die Hilfe. – Charlie

Verwandte Themen