2017-01-03 12 views
0

で今私はこのようなものを持っています。これはクラスvarとして定義されています。は後で私のアプリ

そして、私はそのvarを使ってフェッチされたStatementエンティティに設定します。私は私のcurrentStatementを作成しています方法はエラーを投げている

currentStatement = negativeFetchedResultsController.fetchedObjects![indexPath.row] 

、それは致命的なエラーではありませんが、私はまだそれを修正したいと思います。

私はこれをStatementエンティティの作成に使用するコードだと思います。私はこれをviewDidLoadメソッドで定義しています。しかし、問題はviewDidLoadメソッドで定義されているためです。他の場所では使用できません。

let currentStatement = Statement(context: coreDataStack.managedContext) 

私は

var currentStatement = Statement() 

はそれを行うための正しい方法ではないとして、ことを定義する方法currentStatementのVARを使用することができるようにしたい場合。

答えて

1

currentStatementをオプションとして宣言する必要があります。 Statement()で初期化することはできません。これは指定された初期化子を呼び出さないためです。しかし、管理されたオブジェクトのコンテキストがあるまで、指定された初期化子を呼び出すことはできません。これをオプションにすると、所有するオブジェクトが初期化されたときに変数を初期化する必要がないため、状況を解決します。

これを実行したら、viewDidLoadの行を変更して値を割り当てます。

self.currentStatement = Statement(context: coreDataStack.managedContext) 

self.が必要ではないことに注意してください、それをより明確にすることができます)のようなもの。

+0

このように宣言しますか? 'var currentStatement = Statement()?'これは私がこれを行うことができないというエラーを生成するようです。 – icekomo

+0

いいえ、オプション**として宣言しますが、値は割り当てません**。 'var currentStatement:ステートメント? ' –

関連する問題