Question Comment déboguer 'erreur irrécupérable: découverte inopinée de zéro tout en déroulant une valeur facultative'


Il y a beaucoup de questions sur le dépassement de pile liées à cette erreur. J'ai lu d'excellents articles sur comment fonctionnent les options et ça erreur en particulier. Cependant, je n'ai trouvé aucune information sur la meilleure façon de déterminer la valeur définie à zéro et à l'origine de l'erreur.

Existe-t-il de bonnes techniques de débogage pour savoir quelle option est à l'origine de cette erreur?


13
2018-03-25 08:41


origine


Réponses:


Voici au moins la moitié d'une réponse (est-ce que les autres répondants devraient lire la question en premier!): Utilisez le simulateur au lieu d'un appareil iOS réel.

Le débogueur semble être assez efficace pour pointer la ligne avec les options maltraitées qui posent problème ... à moins que vous ne soyez comme moi, en choisissant d’exécuter le code sur un appareil iOS directement de temps en temps. Dans ce dernier cas, le débogueur me place directement au milieu d'un code d'assembleur sans trace de pile sensible. Le retour au simulateur donne la ligne exacte du code en faute.


34
2017-12-04 15:13



Vous Xcode ne se bloque pas à la ligne de code incorrecte?

Cela ne répond pas à la question mais il est important de noter:

When you are not sure about an optional variable, you have to verify if it contains value or not, by using a pattern like this:

var myOptional : String?
if let aString = myOptional {
    //do your work with aString.
}

0
2018-03-25 08:45



Quelle est la valeur de base optionnelle "?" quand vous placez? après un type de données qui est facultatif alors que s'il est déballé et qu'un zéro apparaît, il n'y a pas d'erreur mais c'est vous qui placez "!" point d'exclamation après le type de données alors si il déballe la variable et nil apparaît alors il y a un crash ou une erreur si souvent utiliser facultatif comme

var myVariable : DataType ? = DataType()
or 
var myVariable : DataType ? = nil
or
var myVariable : DataType ? = value

Une option dans Swift est une variable pouvant contenir une valeur ou aucune valeur. Les options sont écrites en ajoutant a? au type:

var myOptionalString:String? = "Hello"

Certains lieux optionnels sont utiles:

  • Quand une propriété peut être là ou pas, comme middleName ou conjoint dans une classe de personne
  • Quand une méthode peut retourner une valeur ou rien, comme recherche d'une correspondance dans un tableau
  • Quand une méthode peut retourner un résultat ou obtenir une erreur et ne rien retourner
  • Les propriétés des délégués (qui ne doivent pas toujours être définies)
  • Pour les propriétés faibles dans les classes. La chose qu'ils peuvent montrer
    être mis à zéro
  • Pour une ressource importante qui pourrait devoir être libérée pour
    récupérer de la mémoire

https://medium.com/@rrridges/swift-optionals-a10dcfd8aab5


-2
2018-03-25 09:19