Ich war kürzlich gezwungen, auf Swift 3.0 zu aktualisieren und es scheint, als ob die Konvertierung von Xcode keine gute Arbeit geleistet hätte. Zum Glück kann ich die meisten Probleme manuell lösen, allerdings hat man mich etwas verwirrt.
Diese Zeile, die die Methode canBecomeFirstResponder
in uiController überschrieben hat, funktionierte vor dem Upgrade auf Swift 3.0:
Allerdings gibt es jetzt den Fehler zurück:
Methode überschreibt keine Methode aus ihrer Oberklasse.
Das Entfernen des override
Bits scheint es jedoch nicht zu beheben, da es einen anderen Fehler verursacht, der dem vorherigen zu widersprechen scheint:
Methode 'canBecomeFirstResponder ()' mit Objective-C-Selektor 'canBecomFirstResponder' steht in Konflikt mit Getter für 'canBecomeFirstResponder' aus der Oberklasse 'UIResponder' mit demselben Objective-C-Selektor
Tritt tatsächlich eine Überschreibung auf? Warum gibt mir Xcode gemischte Nachrichten?
Als Referenz habe ich diese Frage angeschaut und obwohl es sehr ähnlich ist, handelt es sich um eine Klasse, und hier geht es um eine Methode. Um sicherzugehen, habe ich versucht, die Lösung für diese Frage zu verwenden, und es hat weitere Probleme verursacht und die gleichen Fehler verursacht.
canBecomeFirstResponder
wurde von einer Methode in Swift 2.2 in eine Eigenschaft in Swift 3.0 geändert. Dies bedeutet, dass Sie Ihren Code ändern müssen, um ihn als Eigenschaft anstelle einer Methode zu überschreiben.
Schnelles Tutorial, um selbst herauszufinden:
canBecomeFirstResponder
Jetzt sehen Sie die Deklaration
%Vor%Siehst du den Unterschied?