2017-09-11 12 views
0

データを作成する方法があります。このメソッドは一度だけ呼び出す必要があります。viewDidLoadメソッド内のUIViewControllerでメソッドを初期化する方法

var dataCreated : Bool? = false 



override func viewDidLoad() { 
    super.viewDidLoad() 

    if dataCreated! == false { 
     createData() 
     self.dataCreated = true 
    } 
} 

これは一度だけ呼び出されcreateData()方法を確保するための正しい方法です。だから、現在、これは構造がありますか?ありがとうございました。

+0

「一度」を定義します。このビューコントローラのインスタンスごとに1回作成されますか?アプリが実行されるたびに1回ですか?一度インストールされているアプリの寿命のために? – rmaddy

+0

このビューコントローラのインスタンスごとに一度作成される –

+0

'viewDidLoad'は、作成されているビューコントローラのインスタンスごとに一度だけ呼び出されます – dan

答えて

2

ビューコントローラのインスタンスごとに1度だけcreateDataが呼び出されるようにするには、viewDidLoadを使用するとよいでしょう。さらに、viewDidLoadはビューコントローラのインスタンスごとに1回しか呼び出されないので、dataCreatedプロパティは必要ありません。それを削除することができます。

override func viewDidLoad() { 
    super.viewDidLoad() 

    createData() 
} 

別のオプションは、ビューコントローラのinit方法からcreateDataを呼び出すことであろう。これは、createDataにアクセスする必要があるかどうかによって異なります。 createDataメソッドがビューとアウトレットにアクセスする必要がある場合は、viewDidLoadを使用する必要があります。

+0

あなたのソリューションは私のために働いてくれてありがとう@rmaddy –

0

あなたのコードは期待通りに動作します。データが作成されたかどうかは、別のブール変数を追跡するのではなく、その存在をチェックすることによって計算する方がよいでしょう。これも動作しますが。

関連する問題