TL; DR
popViewController(animated:)
renvoie UIViewController?
, et le compilateur donne cet avertissement puisque vous ne capturez pas la valeur. La solution consiste à l'affecter à un trait de soulignement:
_ = navigationController?.popViewController(animated: true)
Swift 3 Change
Avant Swift 3, toutes les méthodes avaient un «résultat jetable» par défaut. Aucun avertissement ne se produit lorsque vous ne capturez pas ce que la méthode a renvoyé.
Afin d'indiquer au compilateur que le résultat doit être capturé, vous devez ajouter @warn_unused_result
avant la déclaration de méthode. Il serait utilisé pour les méthodes qui ont une forme mutable (ex. sort
Et sortInPlace
). Vous ajouteriez @warn_unused_result(mutable_variant="mutableMethodHere")
pour en informer le compilateur.
Cependant, avec Swift 3, le comportement est inversé. Toutes les méthodes avertissent désormais que la valeur de retour n'est pas capturée. Si vous voulez dire au compilateur que l'avertissement n'est pas nécessaire, vous ajoutez@discardableResult
avant la déclaration de méthode.
Si vous ne souhaitez pas utiliser la valeur de retour, vous devez le dire explicitement au compilateur en l'attribuant à un trait de soulignement:
_ = someMethodThatReturnsSomething()
Motivation pour l'ajouter à Swift 3:
- Prévention d'éventuels bugs (ex. Utilisation
sort
pensant que cela modifie la collection)
- Intention explicite de ne pas capturer ou de ne pas avoir besoin de capturer le résultat pour d'autres collaborateurs
L'API UIKit semble être en retard sur ce point, n'ajoutant pas @discardableResult
à l'utilisation parfaitement normale (sinon plus courante) de popViewController(animated:)
sans capturer la valeur de retour.
Lire la suite