我是Swift的新手,遇到了问题。
当我在课程中使用optional let
时,它会给出错误" Class className has no initializers
"。
但是当我使用optional var
编写相同的代码时,它没有显示任何错误。
例如:
以下代码给出了错误:Class className has no initializers
class className: UIViewController
{
let nearbyPlaceRadius : Int?
override func viewDidLoad()
{
super.viewDidLoad()
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
}
以下代码没有给我任何错误。
class className: UIViewController
{
var nearbyPlaceRadius : Int?
override func viewDidLoad()
{
super.viewDidLoad()
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
}
答案 0 :(得分:4)
let nearbyPlaceRadius : Int?
实际上你可以在你的代码中使用以上行并且没有错。但是如果你这样做,你必须编写init
方法并在该方法中设置它的值。
答案 1 :(得分:1)
问题是let
是不可变的。使用let
关键字定义变量或对象后,无法更改它,使用var
时,您可以随时改变它。
这就是原因,它说class has no initializers
let someThing: Int? //Wrong
let someThing: Int = 100 //Correct
供参考:What is the difference between `let` and `var` in swift?
更新
您可以将let关键字与初始值设定项一起使用。
let name: String?
init (name: String) {
println("Initializing: \(name)")
self.name = name
}