inattendus de la non-valeur de retour void en fonction void dans la nouvelle Swift classe
Je viens juste de commencer à apprendre à propos Orientée Objet, et j'ai commencé la rédaction d'un utilisateur de la classe qui a une méthode pour le calcul de l'utilisateur à distance à partir d'un objet. Il ressemble à ceci:
class User{
var searchRadius = Int()
var favorites : [String] = []
var photo = String()
var currentLocation = CLLocation()
func calculateDistance(location: CLLocation){
let distance = self.currentLocation.distanceFromLocation(location)*0.000621371
return distance //Error returns on this line
}
}
À la ligne tracée ci-dessus, j'obtiens l'erreur suivante:
(!) Unexpected non-void return value in void function
J'ai regardé ailleurs pour trouver une solution, mais n'arrive pas à trouver quelque chose qui s'applique à la présente instance. J'ai utilisé le distanceFromLocation code ailleurs, et ça a bien fonctionné, donc je ne suis pas sûr de ce qui est différent au sujet de l'utilisation dans ce cas.
Merci pour toute aide!
Cela pourrait être aussi parce que, votre retour de l'une de completionHandler qui ne sont pas censés revenir. Voir Cette réponse
OriginalL'auteur Joe Sloan | 2016-07-19
Vous devez vous connecter pour publier un commentaire.
Il vous manque le type de retour de votre méthode d'en-tête.
Apparemment ma réponse peut paraître comme un être inférieur double, de sorte que certains des plus.
Fonctions (y compris les méthodes, dans ce cas) a déclaré sans des types de retour sont appelés en tant que fonction void, parce que:
est équivalent à:
Habituellement, vous ne pouvez pas retourner une valeur quelconque de ces fonctions void.
Mais, dans Swift, vous pouvez retourner une seule valeur (je ne suis pas sûr qu'il peut être appelé en tant que "valeur"), "nulle valeur" représenté par
()
.Maintenant, vous pouvez comprendre le sens du message d'erreur:
Vous devez modifier la valeur de retour ou bien changer le type de retour
Void
à un autre type.(Data?, URLResponse?, Error?) -> Void
. Il est source de confusion car j'ai été en utilisant cette fermeture au sein d'une fonction de signature() -> Void
. Pour résoudre ce problème, j'ai sauvegardé les données à une variable locale, puis retournés à l'extérieur de la clôture.OriginalL'auteur OOPer
Votre fonction calculateDistance ne spécifie pas de valeur de retour. Cela signifie qu'il ne retourne rien.
Cependant, vous avez une ligne de
return distance
, qui est de retourner une valeur.Si vous voulez que votre fonction pour renvoyer une distance, vous devez le déclarer comme ceci:
Vous devez accepter l'une des réponses. Et, vous devriez probablement lu l'Apple Swift iBook. Il couvre les fonctions et les valeurs de retour de façon très claire.
OriginalL'auteur Duncan C