Obtenir la plainte du compilateur lorsque je fais cela
class ViewController: UIViewController {
var delegate : AppDelegate
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//self.appDelegate = UIApplication.sharedApplication().delegate;
}
@IBAction func getData(sender : AnyObject) {
}
@IBAction func LogOut(sender : AnyObject) {
}
}
Cependant, si je viens d'ajouter ? à la fin d' AppDelegate comme ci-dessous et l'erreur a disparu.
class ViewController: UIViewController {
var delegate : AppDelegate?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//self.appDelegate = UIApplication.sharedApplication().delegate;
}
@IBAction func getData(sender : AnyObject) {
}
@IBAction func LogOut(sender : AnyObject) {
}
}
Je ne vois pas de optional
mot clé pertinent pour cette erreur, sauf si je me trompe.
la source
Ce problème apparaît généralement lorsque l'une de vos variables n'a aucune valeur ou lorsque vous oubliez d'ajouter "!" pour forcer cette variable à stocker nil jusqu'à ce qu'elle soit définie.
Dans votre cas, le problème est ici:
Il doit être défini de manière
var delegate: AppDelegate!
à en faire un optionnel qui stocke nil et ne déroule pas la variable tant que la valeur n'est pas utilisée.Il est triste que Xcode met en évidence toute la classe comme une erreur au lieu de mettre en évidence la ligne de code particulière qui l'a provoquée, il faut donc un certain temps pour la comprendre.
la source
si vous avez perdu un "!" dans votre code, comme ce code ci-dessous, vous obtiendrez également cette erreur.
la source
Remplacez
var appDelegate : AppDelegate?
parlet appDelegate = UIApplication.sharedApplication().delegate
comme indiqué sur la deuxième ligne commentée dansviewDidLoad()
.Le mot-clé "facultatif" se réfère exactement à l'utilisation de
?
, voir ceci pour plus de détails.la source
J'utilise Xcode 7 et Swift 2. Enfin, j'avais fait:
class ViewController: UIViewController {var time: NSTimer // erreur ceci ici}
Ensuite, je corrige: class ViewController: UIViewController {
}
la source
Pour moi, c'était une déclaration incomplète. Par exemple:
Au lieu de cela la bonne manière:
la source