Mendapatkan komplain dari kompiler ketika saya melakukan ini
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) {
}
}
Namun, apakah saya hanya menambahkan ? di akhir AppDelegate seperti di bawah ini dan kesalahan hilang.
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) {
}
}
Saya tidak melihat optional
kata kunci yang relevan dengan kesalahan ini kecuali saya salah.
sumber
Masalah ini biasanya muncul ketika salah satu variabel Anda tidak memiliki nilai atau ketika Anda lupa menambahkan "!" untuk memaksa variabel ini menyimpan nihil hingga disetel.
Dalam kasus Anda, masalahnya ada di sini:
Ini harus didefinisikan
var delegate: AppDelegate!
untuk menjadikannya opsional yang menyimpan nil dan tidak membuka bungkusan variabel hingga nilainya digunakan.Sayangnya Xcode menyoroti seluruh kelas sebagai kesalahan alih-alih menyoroti baris kode tertentu yang menyebabkannya, jadi perlu beberapa saat untuk mengetahuinya.
sumber
jika Anda kehilangan "!" dalam kode Anda, seperti kode di bawah ini, Anda juga akan mendapatkan kesalahan ini.
sumber
Ganti
var appDelegate : AppDelegate?
denganlet appDelegate = UIApplication.sharedApplication().delegate
seperti yang diisyaratkan pada baris komentar kedua diviewDidLoad()
.Kata kunci "opsional" mengacu tepat pada penggunaan
?
, lihat ini untuk lebih jelasnya.sumber
Saya menggunakan Xcode 7 dan Swift 2. Terakhir, saya telah membuat:
kelas ViewController: UIViewController {var time: NSTimer // kesalahan ini di sini}
Lalu saya perbaiki: class ViewController: UIViewController {
}
sumber
Bagi saya adalah deklarasi tidak lengkap. Sebagai contoh:
Sebaliknya dengan cara yang benar:
sumber