Otrzymuję skargę od kompilatora, kiedy to robię
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śli jednak dodam ? na końcu AppDelegate jak poniżej i błąd zniknął.
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) {
}
}
Nie widzę optional
słowa kluczowego związanego z tym błędem, chyba że się mylę.
źródło
Ten problem pojawia się zwykle, gdy jedna ze zmiennych nie ma wartości lub gdy zapomnisz dodać znak „!” aby zmusić tę zmienną do przechowywania nil, dopóki nie zostanie ustawiona.
W twoim przypadku problem jest tutaj:
Powinien być zdefiniowany jako
var delegate: AppDelegate!
aby był opcjonalny i przechowuje wartość nil i nie rozpakowuje zmiennej, dopóki wartość nie zostanie użyta.To smutne, że Xcode podświetla całą klasę jako błąd zamiast podświetlać konkretny wiersz kodu, który go spowodował, więc zrozumienie tego zajmuje trochę czasu.
źródło
jeśli zgubiłeś „!” w swoim kodzie, tak jak w poniższym kodzie, również pojawi się ten błąd.
źródło
Zastąp zgodnie
var appDelegate : AppDelegate?
zelet appDelegate = UIApplication.sharedApplication().delegate
wskazówkami w drugiej skomentowanej liniiviewDidLoad()
.Słowo kluczowe „opcjonalne” odnosi się dokładnie do użycia.
?
Zobacz to, aby uzyskać więcej informacji.źródło
Używam Xcode 7 i Swift 2. Na koniec:
class ViewController: UIViewController {var time: NSTimer // tutaj błąd}
Następnie naprawiam: class ViewController: UIViewController {
}
źródło
Dla mnie była to deklaracja niekompletna. Na przykład:
Zamiast tego we właściwy sposób:
źródło