Ich habe gerade mein Projekt von Swift 2.2 auf Swift 3.0 mit Xcode 8 Beta migriert."Mehrdeutige Verwendung von Präfix" Compilerfehler mit Swift 3
Ich habe etwas ähnliches wie den folgenden Code (Sie dies in einen Spielplatz einfügen können):
import Foundation
let datesWithCount: [(Date, Int)] = [(Date(), 1), (Date(), 2), (Date(), 3)]
let dates: [Date] = datesWithCount.sorted {
$0.0 < $1.0
}.prefix(1).map {
return $0.0
}
In Swift 2.2 dieses feinen zusammengestellt. Doch mit Swift 3.0 Ich erhalte die Fehler
mehrdeutige Verwendung von ‚prefix‘
Der einzige Weg, dies in Swift 3.0 zu kompilieren zu bekommen, ist die Karte in eine separate Zeile aufzuschlüsseln:
let sortedDatesWithCount = datesWithCount.sorted {
$0.0 < $1.0
}.prefix(1)
let mappedDates = sortedDatesWithCount.map {
return $0.0
}
BTW, in dem eigentlichen Code, den ich Rückkehr NSNotification
Objekte aus dem map
nicht Date
s aber der Fehler ist das gleiche. Ich habe gerade Date
hier verwendet, um das Beispiel einfach zu machen.
Gibt es eine Möglichkeit, dies als einen einzigen Liner zu kompilieren?
UPDATE: Erstellt eine JIRA für das Swift-Projekt.
Datum entspricht dem Protokoll Vergleichbar in Swift 3. 'sortierte {$ 0.0 <$ 1.0}' sollte genug sein –
Danke, ich wusste es nicht. Das sind sehr gute Nachrichten! // Ich benutze nur den OP-Code, und sie sagen, dass Date nur ein Beispiel ist. :) – Moritz
Sieht für mich auch wie ein Inferenzfehler aus. Ich werde es als solches melden. @LeoDabus danke für den Tipp zum Sortieren von Daten. Der echte Code sortiert tatsächlich auch nach Daten. Das Beispielbit gibt Daten aus der Karte zurück. – mluisbrown