TL; DR
popViewController(animated:)
kehrt zurück UIViewController?
, und der Compiler gibt diese Warnung aus, da Sie den Wert nicht erfassen. Die Lösung besteht darin, es einem Unterstrich zuzuweisen:
_ = navigationController?.popViewController(animated: true)
Swift 3 Change
Vor Swift 3 hatten alle Methoden standardmäßig ein "verwertbares Ergebnis". Es wird keine Warnung angezeigt, wenn Sie nicht erfasst haben, was die Methode zurückgegeben hat.
Um dem Compiler mitzuteilen, dass das Ergebnis erfasst werden soll, mussten Sie @warn_unused_result
vor der Methodendeklaration hinzufügen . Es würde für Methoden verwendet, die eine veränderbare Form haben (z. B. sort
und sortInPlace
). Sie würden hinzufügen @warn_unused_result(mutable_variant="mutableMethodHere")
, um dem Compiler davon zu erzählen.
Bei Swift 3 wird das Verhalten jedoch umgedreht. Alle Methoden warnen jetzt, dass der Rückgabewert nicht erfasst wird. Wenn Sie dem Compiler mitteilen möchten, dass die Warnung nicht erforderlich ist, fügen Sie sie @discardableResult
vor der Methodendeklaration hinzu.
Wenn Sie den Rückgabewert nicht verwenden möchten, müssen Sie dies dem Compiler explizit mitteilen, indem Sie ihn einem Unterstrich zuweisen:
_ = someMethodThatReturnsSomething()
Motivation, dies zu Swift 3 hinzuzufügen:
- Verhinderung möglicher Fehler (z.
sort
B. durch das Denken, dass die Sammlung geändert wird)
- Explizite Absicht, das Ergebnis für andere Mitarbeiter nicht zu erfassen oder erfassen zu müssen
Die UIKit-API scheint dahinter zu stehen und fügt nicht @discardableResult
für die völlig normale (wenn nicht häufigere) Verwendung hinzu, popViewController(animated:)
ohne den Rückgabewert zu erfassen.
Weiterlesen