web-dev-qa-db-ja.com

Xcode NSManagedObjectサブクラスは、非オプションとしてマークされている場合、オプションを含みます

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

enter image description here

enter image description here

オプションのプロパティとして手動で変更できますか、それともオプションのままにしておく方が良いでしょうか?どうして?

44
Davide

「オプション」とは、Swiftとは異なるCore Dataの意味です。

  • Core Data属性がオプションでない場合は、nil以外の値変更を保存するときにする必要があります。それ以外の場合、Core Dataは属性がnilかどうかを気にしません。
  • Swiftプロパティはオプションではない場合、初期化の完了後、nil以外の値常時が必要です。

コアデータ属性を非オプションにすることは、Swift用語の意味でオプションではないことを意味しません。そのため、コアデータに関する限り、生成されたコードはこれらのプロパティをオプションにします。 、変更を保存する場合を除いて、nilの値を持つことは合法です。

64
Tom Harrington

これは既知の問題です。一部の人々はそれをオプションのないものに変更して悪影響を与えません、私はそれを生成された方法で保ち、早期の修正を望みます。

バグをAppleに送信して、可視性と優先度を高める場合)は常に役立ちます。

6
MirekE

Managedobjectクラスを作成し、エンティティクラスタイプを手動に変更して、これらのクラスをプロジェクトスコープに追加します。

ManagedObjectを編集して、それらを非オプションにします。つまり、このクラスを自分で保守し、コアデータモデルとクラスの両方で変更を行う必要があります。

データモデルが安定していて変更されない場合は、これを使用できます。

1
megha