ich ein Protokoll mit einem Verfahren definiert haben ein Tupel zurück:Rückkehr Tuple Von Delegate (Wert des optionalen Typ nicht ausgepackt)
protocol SMCalculatorDelegate {
func numbersToAdd() -> (Int, Int)
}
Wenn ich versuche, wie dies in meiner Klasse dies gegen die delegierte Methode aufrufen :
class SMCalculator: NSObject {
var delegate : SMCalculatorDelegate?
func add() {
let myTuple : (n1: Int, n2: Int) = delegate?.numbersToAdd()
}
}
ich erhalte die auf der Linie folgende Fehler let myTuple...
Bezugnahme auf die .numbersToAdd()
Abschnitt dieser Codezeile zu starten.
Warum funktioniert das nicht, wenn ich das Tupel ohne Fehler so extrahieren kann?
Sie sind richtig, dies beseitigt die Build-Fehler machen und die Logik macht Sinn ... Ich habe aber immer noch Probleme beim Zugriff auf die einzelnen Werte des Tupels. Wenn ich die Dokumente richtig gelesen habe, dann sollte ich * einfach * in der Lage sein, 'println (meinTuple.n1)' zu gehen, aber das erhöht den Fehler '' (n1: Int, n2: Int)? ' hat kein Member namens 'n1'' – Sammio2
Ich habe meine Lösung aktualisiert, um zu zeigen, wie man auf optionale Variablen zugreift. Weil sie umsonst sind, müssen Sie das '!' Operator, um sie auszupacken, was dem Compiler sagt, dass Sie sicher sind, dass der Wert zu diesem Zeitpunkt im Code nie Null ist, oder Sie verwenden die If-Struktur, um den Fall zu erfassen, dass der Wert null ist. – Jann
Oh ja natürlich !! Da das Tupel optional ist, sind dies auch die Werte innerhalb des Tupels. Danke für Ihre Hilfe! Mein Gehirn ist am Ende einer langen Woche gebraten! – Sammio2