2015-11-05 5 views
24

私は、タイトルと日付のプロパティを持つFilmという名前のコアデータエンティティを持っています。私は、生成されたNSManagedObjectサブクラスに、オプションのNSManagedプロパティが含まれていることに気付きましたが、コアデータインスペクタでプロパティを非オプションとしてマークしました。Xcode NSManagedObjectサブクラスに非オプションとしてマークされたオプションが含まれています

enter image description here

enter image description here

私は手動で非オプションのプロパティとしてそれを変えることができるか、オプションとして、それを残すためのより良い選択であることはできますか?どうして?

答えて

35

「オプション」は、Core Dataとは何かを意味し、Swiftとは異なるものを意味します。

  • コアデータの属性はオプションでない場合は、変更内容を保存するとき、それは非nilの値を持っている必要があります。他の時には、属性がnilであるかどうかコアデータは気にしません。
  • Swiftプロパティがオプションでない場合は、初期化が完了した後には、0以外の値を常に持つ必要があります。

コアデータ属性を非オプションにすることは、用語のスウィフトの意味で非オプションであることを意味するものではありません。これが、生成されたコードがこれらのプロパティをオプションにする理由です。コアデータに関する限り、変更を保存するときを除いてnil値を持つことは合法です。

+2

"override func awakeFromInsert()"内に、少なくとも任意の変数を割り当てないようにしてください。 – adamek

4

これは既知の問題です。一部の人々は、それを悪影響を伴わない非選択的なものに変えます。私はそれが生成された方法を保ち、早期の修正を希望します。

あなたが表示と優先度を高めるためにアップルにバグを提出すると、常に役立ちます。

関連する問題