Swift Options - de façon Inattendue trouvé nulle lors de déballage d'une valeur facultative

Je suis nouveau sur Swift et ont été d'essayer d'envelopper (ha) ma tête autour de valeurs optionnelles. Aussi loin que je peux voir - même si je suis probablement mal - variables peuvent être en option et, par conséquent, contenir une valeur nulle, et ceux-ci doivent être comptabilisées dans le code.

Chaque fois que j'ai touché le bouton "enregistrer" dans mon application, j'obtiens l'erreur: "fatal error: de façon inattendue trouvé nulle, tandis que d'ôter une Option de valeur".

@IBAction func saveTapped(sender: AnyObject) {

    //code to save fillup to Parse backend

    //if variable is not nil
    if let username = PFUser.currentUser()?.username {

        //set username equal to current user
        self.object.username = username

    }else{

        println("PFUser.currentUser()?.username contained a nil value.")

    }

    //if variable is not nil
    if let amount = self.amountTextField.text {

        //set amount equal to value in amountTextField
        self.object.amount = self.amountTextField.text

    }else{

        println("self.amountTextField.text contained a nil value.")

    }

    //if variable is not nil
    if let cost = self.costTextField.text {

        //set cost equal to the value in costTextField
        self.object.cost = self.costTextField.text

    }else{

        println("self.costTextField.text contained a nil value.")

    }

    //set date equal to the current date
    self.object.date = self.date

    //save the object
    self.object.saveEventually { (success, error) -> Void in

        if error == nil {

            println("Object saved!")

        }else{

            println(error?.userInfo)

        }


    }

    //unwind back to root view controller
    self.navigationController?.popToRootViewControllerAnimated(true)

}

Ne sais pas si l'erreur est à cause de quelque chose dans ce bloc de code ou quelque part d'autre - peut fournir à la classe principale de code si nécessaire.

Aucune aide n'importe qui peut à condition serait vraiment apprécié comme cela a été m'énerve pour un certain temps maintenant.

  • Est self.date Facultative et l'erreur qui se passe sur le self.object.date = self.date ligne? Parce qu'on dirait que c'est la seule valeur qui pourrait être nul et n'ont pas de if let.
  • BTW, vous devriez le faire avec tous vos if let comme vous l'avez fait dans la première, avec username: utilisation de l'déballé valeur à l'intérieur de la première branche. Je veux dire, utiliser amount au lieu de self.amountTextField.text à l'intérieur de la if let, etc.
  • Vous pouvez également obtenir nil while unwrapping optional si par exemple, votre self.costTextField n'a pas été raccordé correctement à une prise de courant et vous avait déclaré comme implicitement déballé optionnel comme @IBOutlet var costTextField: UITextField!
  • J'ai supprimé toutes les références à ce Jour juste pour s'assurer que l'erreur s'affiche toujours. Également changé mon if let déclarations comme vous l'avez suggéré et ça ne fonctionne toujours pas. Pourrait-il peut-être d'autres code de l'origine de l'erreur? Même si cette erreur se produit uniquement lorsque j'exécute l' saveTapped action.
  • mon textFields sont déclarées comme implicitement déballé...comment doivent-elles être déclarées?
  • Xcode doit mettre en évidence la ligne où l'erreur se produit, normalement. N'est ce pas?
  • l'erreur s'affiche dans la console et Xcode me montre un complexe à la recherche de la page avec des trucs comme ça partout: 0x100435474 <+44>: brk #0x1 . Ne semble pas montrer d'où l'erreur se trouve dans mon code.
  • Je vois. Dans ce cas, je voudrais essayer de définir des points d'arrêt dans votre code à des lieux importants de try et catch où il se bloque exactement. Pas sûr du tout qu'elle vient du code de vous montrer ici. :/

InformationsquelleAutor mforrest | 2015-04-30