Получение жалобы от компилятора, когда я это делаю
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) {
}
}
Однако если я просто добавлю ? в конце AppDelegate, как показано ниже, и ошибка исчезла.
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) {
}
}
Я не вижу optional
ключевого слова, относящегося к этой ошибке, если я не ошибаюсь.
источник
Эта проблема обычно возникает, когда одна из ваших переменных не имеет значения или когда вы забываете добавить "!" чтобы заставить эту переменную хранить ноль, пока она не будет установлена.
В вашем случае проблема здесь:
Он должен быть определен так,
var delegate: AppDelegate!
чтобы сделать его необязательным, который хранит nil и не разворачивает переменную, пока значение не будет использовано.Печально, что Xcode выделяет весь класс как ошибку, вместо того, чтобы выделять конкретную строку кода, которая ее вызвала, поэтому требуется время, чтобы понять это.
источник
если вы потеряли знак "!" в вашем коде, как этот код ниже, вы также получите эту ошибку.
источник
Замените
var appDelegate : AppDelegate?
наlet appDelegate = UIApplication.sharedApplication().delegate
как указано во второй строке комментария вviewDidLoad()
.Ключевое слово «необязательно» относится именно к использованию
?
, см это для более подробной информации.источник
Я использую Xcode 7 и Swift 2. Наконец, я сделал:
class ViewController: UIViewController {var time: NSTimer // ошибка здесь}
Потом исправляю: class ViewController: UIViewController {
}
источник
Для меня декларация была неполной. Например:
Вместо правильного пути:
источник