2016-12-18 12 views
0

私はthis tutorialを使用して簡単なショッピングリストアプリを作成します。私はこれらのコード行に問題があります。イニシャライザはタイプ/コーダ内でのみ宣言できます

override func viewDidLoad() { 
    super.viewDidLoad() 

    required init?(coder aDecoder: NSCoder) { // error appears here 
     self.init(coder: aDecoder); 

     loadItems() 
    } 
} 

エラーがあります:初期化子はあるタイプ内でのみ宣言できます。 なぜ正しくないのですか?私はここで何を変えるべきですか?

+0

「viewDidLoad」からイニシャライザを移動します。これは、関数ではなく型のスコープに属します。 – Hamish

+0

それは動作します、ありがとう!答えとして送ってください – Kinga

答えて

1

イニシャライザは、他の機能の中ではなく、タイプレベルに配置する必要があります。

class Item: NSObject, NSCoding { 

    required init?(coder aDecoder: NSCoder) { 
     self.init(coder: aDecoder) 
     loadItems() 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // this code runs when the view loads 
    } 

    func loadItems() { 
     // item loading code here 
    } 

} 
関連する問題