2016-09-16 4 views
0

Ich habe dieses Lernprogramm durchlaufen here aber wenn Sie versuchen, den Code auf Swift 3-Syntax zu aktualisieren, erhalten Sie Fehler. Ich weiß nicht genug Swift, um sie selbst zu reparieren. Verwenden des UISplitViewController in iOS Swift 3

enter image description hereenter image description here

Unterm Strich ist Ich versuche, ein Tutorial zu finden, um mir die UISplitViewController in Swift 3. Ich Xcode Application Master-Detail-versuchte zerpflücken verwenden zu helfen, aber ich war nicht in der Lage, es herauszufinden.

EDIT: Ich konnte die Fehler loswerden, aber die App funktioniert nicht richtig, d. H. Die Detailansicht der App sollte in das entsprechende Master-Ansichtselement geändert werden. Es tut das nicht. Es bleibt auf einen Blick.

Antwort

0

Ich war in der Lage, dies mit etwas Fiedeln an die Syntax zu beheben. Sie müssen den Init-Coder-Part als 'erforderliche Init?' mit einem Fragezeichen oder sonst erhalten Sie einen Fehler und fügen möglicherweise ein Ausrufezeichen irgendwo im Tableview DidSelectRow Teil hinzu.

+0

Das klingt sehr gefährlich. Sie sollten sicherstellen, dass Sie genau wissen, was Ihr Fix vor der Implementierung tut, besonders wenn Sie ihn mit Ausrufezeichen "reparieren". In diesem Fall haben Sie Ihren Initialisierer als fehlbar markiert, dh es ist erlaubt, 'nil' zurückzugeben. Wenn Sie das nie wollen, sollten Sie den Fall von 'super.init' behandeln und' nil' zurückgeben. – BallpointBen

+0

Ich bin ein Noob und das ist alles nur für mein Lernen. Danke dafür, ich hatte keine Ahnung. Könnte mehr darüber ausarbeiten, was du meinst, oder auf Informationen darüber hinweisen. Ich habe dies nur als "Fix" markiert, da es kompiliert und wie erwartet ausgeführt wurde. – codegeek511

+0

Sie können mehr über Failable-Initialisierer hier lesen: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html#//apple_ref/doc/uid/TP40014097-CH18-ID224. Im Grunde können Sie keinen fehlbaren Initialisierer in einem nicht fehlbaren Initialisierer haben, denn wenn die innere Initialisierung fehlschlägt, hat das äußere "init" keine Möglichkeit, es zu handhaben. Deshalb müssen Sie es intern explizit behandeln (oder markieren Sie das äußere 'init' als fehlbar, was möglicherweise nicht das ist, was Sie wollen). Sie wollen wahrscheinlich gar nicht erst 'init (coder aDecoder: NSCoder)' implementieren. – BallpointBen