2016-03-21 7 views
1

私は迅速に問題を抱えています。オプションのレットとオプションのバーをクラス内でスチフト

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() 
    } 
} 

助けてもらえますか?ありがとうございます..

答えて

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?

Update:

あなたは初期化子でキーワードを聞かせて使用することができます。

let name: String? 

init (name: String) { 
    println("Initializing: \(name)") 
    self.name = name 
} 
+0

しかし、値を初期化しなくても、オプションの定数であるため、値をゼロにする必要があります。 – PGDev

+0

いいえ、 'let'キーワードのために動作しません!しかし、もしあなたが '無し 'と宣言すれば、その目的は何か? Bcazに後で値を割り当てることはできますか? @PGDev –

+0

Ok ...ありがとう.. :) – PGDev

4
let nearbyPlaceRadius : Int? 

実際にあなたのコードとその間違っていない中線の上に持つことができます。しかし、そうする場合は、initメソッドを記述し、そのメソッドの中に値を設定する必要があります。

関連する問題