EntityA
オプションの属性int32を持つがありますresult
。作成するとき、属性EntityA
を設定しません。result
その後、フェッチするときに値があると思いますが、この属性を設定していなくても、nil
何らかの理由でに設定されています。3
何が起きてる?
EntityA
オプションの属性int32を持つがありますresult
。作成するとき、属性EntityA
を設定しません。result
その後、フェッチするときに値があると思いますが、この属性を設定していなくても、nil
何らかの理由でに設定されています。3
何が起きてる?
考えられる 1 番目の問題:
モデル エディタでデフォルト値を設定しました。属性を選択し、インスペクタを確認します。
考えられる 2 番目の問題:
間違った値を取得または表示しています。結果が「3」であることを確認するために使用しているコードを表示します。
考えられる 3 番目の問題:
値を後から誤って設定している可能性があります。おそらくループなどで発生します。属性のテキスト検索を実行して、コード内で出現する可能性のあるものを見つけます。
int32はNSNumberオブジェクトにラップされて保存されます。値を指定しない場合、NSNumberオブジェクトは作成されません-sqlはそれをNULLとして扱います。
iOSCoreDataプログラミングガイドには次のように書かれています。
属性をオプションとして指定できます。つまり、値を持つ必要はありません。ただし、一般に、特に数値の場合は、そうすることをお勧めしません(通常、モデル内のデフォルト値が0の必須属性を使用するとより良い結果を得ることができます)。この理由は、SQLにはObjective-Cのnilとは異なり、NULLに対する特別な比較動作があるためです。データベース内のNULLは0と同じではなく、0を検索してもNULLの列とは一致しません。
したがって、属性を必須にして別の値に設定するか、最初からNSNumberを渡す方がよい場合があります。