Ich bekomme die Beschwerde vom Compiler, wenn ich das mache
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) {
}
}
Wenn ich jedoch nur hinzufüge ? am Ende von AppDelegate wie unten und der Fehler ist weg.
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) {
}
}
Ich sehe kein optional
für diesen Fehler relevantes Schlüsselwort, es sei denn, ich liege falsch.
quelle
Dieses Problem tritt normalerweise auf, wenn eine Ihrer Variablen keinen Wert hat oder wenn Sie vergessen, "!" um diese Variable zu zwingen, nil zu speichern, bis sie gesetzt ist.
In Ihrem Fall ist das Problem hier:
Es sollte so definiert werden
var delegate: AppDelegate!
, dass es eine Option ist, die Null speichert und die Variable erst auspackt, wenn der Wert verwendet wird.Es ist traurig, dass Xcode die gesamte Klasse als Fehler hervorhebt, anstatt die bestimmte Codezeile hervorzuheben, die sie verursacht hat. Daher dauert es eine Weile, bis sie herausgefunden ist.
quelle
wenn du ein "!" In Ihrem Code, wie in diesem Code unten, wird auch dieser Fehler angezeigt.
quelle
Ersetzen Sie
var appDelegate : AppDelegate?
durchlet appDelegate = UIApplication.sharedApplication().delegate
wie in der zweiten kommentierten Zeile in angegebenviewDidLoad()
.Das Schlüsselwort "optional" bezieht sich genau auf die Verwendung von
?
, siehe dies für weitere Details.quelle
Ich benutze Xcode 7 und Swift 2. Zuletzt hatte ich gemacht:
Klasse ViewController: UIViewController {var time: NSTimer // Fehler hier}
Dann behebe ich: Klasse ViewController: UIViewController {
}}
quelle
Für mich war eine Erklärung unvollständig. Beispielsweise:
Stattdessen der richtige Weg:
quelle