2016-10-05 9 views
1

Ich habe alten Swift-Code in den neuen Swift3 in Xcode umgewandelt. Nun ist es, diese Fehler in meiner Swift-Datei zeigt:Fehler in swift erhalten 3 xcode 8

self.detailViewController = controllers[controllers.count- 1].topViewController as? DetailViewController 

Fehler:

Wert vom Typ 'UIViewController' hat kein Mitglied 'topViewController'

let sortedTimes = sorted(times!){a,b in a.0.rawValue < b.0.rawValue} 

Fehler:

‚sortiert‘ ist nicht verfügbar: auf die Sammlung, die Art() -Methode aufrufen

+0

versuchen Sie diese self.detailViewController = (Controller [Controller.count-1] als! UINavigationController). TopViewController als? DetailViewController –

Antwort

0

Die erste könnte sein, dass Ihre UINavigationController in einer Sammlung von UIViewController s gesetzt wird. Sie müssen den Compiler wissen lassen, dass es wirklich ein UINavigationController ist.

self.detailViewController = (controllers[controllers.count - 1] as? UINavigationController)?.topViewController as? DetailViewController 

Das zweite ist, dass die Funktion sorted nun eine Instanzmethode geworden ist.

let sortedTimes = times!.sorted { $0.0.rawValue < $1.0.rawValue } 
+0

der zweite die Fehlerbehebung entfernt den Fehler aber dann die nächsten Zeilen gibt mir einen Fehler keine Idee todayTimes = sortierteTimes tableView.ReloadData (sortiert) – sabrefm1

+0

Was ist der Fehler, den Sie auf den nächsten Zeilen @ sabrefm1 bekommen? –

0

Swift hat die type safety-Funktion, die bei der Kompilierung durchgeführt wird. controllers[controllers.count - 1 muss vom Typ UINavigationController sein. Also musst du es entsprechend umwandeln.

self.detailViewController = (controllers[controllers.count - 1] as? UINavigationController)?.topViewController as? DetailViewController 

Angenommen Sammlung (Array) enthält int-Werte.

let times : NSArray = [1,2,3,4] 
let sortedTimes = times.sorted(by: {a,b in (a as! Int) < (b as! Int)}) 

Sie können aktualisieren Sie die as! gesenkten auf Ihre angegebenen Typs ({a,b in (a as AnyObject).rawValue < b.0.rawValue}).

+0

Technisch ist es nicht falsch zu sagen, Swift 3 ist typsicher. AFAIK, Swift war jedoch immer typsicher. –

+0

Ich habe die Korrektur gemacht. – pkc456

+0

die erste Antwort ist richtig, aber ich habe immer noch einen Fehler auf der zweiten rufen Sie die sort() -Methode – sabrefm1

0

Verwendung dieser Linie,

let sortedTimes = times.sort({a,b in a.0.rawValue < b.0.rawValue}) 

Hope this Ihnen helfen.