2

EntityAオプションの属性int32を持つがありますresult。作成するとき、属性EntityAを設定しません。resultその後、フェッチするときに値があると思いますが、この属性を設定していなくても、nil何らかの理由でに設定されています。3

何が起きてる?

4

2 に答える 2

3

考えられる 1 番目の問題:
モデル エディタでデフォルト値を設定しました。属性を選択し、インスペクタを確認します。

考えられる 2 番目の問題:
間違った値を取得または表示しています。結果が「3」であることを確認するために使用しているコードを表示します。

考えられる 3 番目の問題:
値を後から誤って設定している可能性があります。おそらくループなどで発生します。属性のテキスト検索を実行して、コード内で出現する可能性のあるものを見つけます。

于 2012-05-27T10:13:09.770 に答える
0

int32はNSNumberオブジェクトにラップされて保存されます。値を指定しない場合、NSNumberオブジェクトは作成されません-sqlはそれをNULLとして扱います。

iOSCoreDataプログラミングガイドには次のように書かれています。

属性をオプションとして指定できます。つまり、値を持つ必要はありません。ただし、一般に、特に数値の場合は、そうすることをお勧めしません(通常、モデル内のデフォルト値が0の必須属性を使用するとより良い結果を得ることができます)。この理由は、SQLにはObjective-Cのnilとは異なり、NULLに対する特別な比較動作があるためです。データベース内のNULLは0と同じではなく、0を検索してもNULLの列とは一致しません。

したがって、属性を必須にして別の値に設定するか、最初からNSNumberを渡す方がよい場合があります。

于 2012-05-27T09:52:56.303 に答える