2016-03-21 9 views
-1

Viele Leute verwenden $0 und $1 beim Sortieren. Es funktioniert nicht für mich. Hier ist der Code, den manche Leute benutzen.

images.sort({ $0.fileID > $1.fileID }) 

images ist das Array und nehme ich an, dass .fileID ein Feld innerhalb dieses Objekts ist. Ich möchte mein Array von oneCells Strukturen mit dem Namen spend sortieren.

struct oneCell{ 
    var date = NSDate() 
    var money = Int() 
} 

var spend = [oneCell]() 

Ich möchte das Array nach Datum sortieren. Wie würde ich das tun?

+1

Ihr Titel und der Fragetext stimmen nicht überein. Fragen Sie, was "$ 0", "$ 1" sind (es ist * im Swift-Buch dokumentiert) oder warum Ihre Sortierung nicht funktioniert? –

+1

Willkommen bei SO. Ich habe bemerkt, dass Ihr Titel Ihre Frage nicht behandelt - wenn Sie auf die Schaltfläche Bearbeiten klicken, können Sie Ihre Frage bearbeiten und in etwas relevanteres ändern. (Wie man ein Array in Swift nach Datum sortiert, oder so ähnlich). – Koen

+0

zeigen Sie die Sortierung, die Sie versucht haben und erklären Sie, welchen Fehler Sie bekommen – Wain

Antwort

1

Es ist Stenografie Argument Namen

Swift stellt automatisch Stenografie Argument Namen Verschlüsse Inline, die verwendet werden können, um die Werte der Argumente der Schließung durch die Namen 0, $ 1, $ 2 $ zu beziehen, und so auf

0

hoffe, dies wird Ihnen helfen:

struct oneCell{ 
    var date = NSDate() 
    var money = Int() 
} 

var Spend = [oneCell]() 
Spend.sort({ $0.date.compare($1.date) == NSComparisonResult.OrderedAscending }) 
1

dies sind p Lakeholder für Werte in einen Verschluss übergeben. Sie werden nach Position benannt anstatt benannt zu werden. $0 ist das erste Argument für die Schließung, $1 die zweite, $2 die dritte, und so weiter. In diesem Fall benötigt sort zwei Argumente. $0 ist das aktuelle Element des spend Arrays und $1 ist das nächste. Sie würden sort so anrufen.

let sorted = spend.sort{$0.date.timeIntervalSince1970 > $1.date.timeIntervalSince1970}