54

NSManagedObjectオブジェクトの作成中に「プリミティブデータ型にスカラープロパティを使用する」をいつチェックする必要がありますか?
費用はかかりますか(データベースのパフォーマンスが向上するか、軽量化されますか)?

4

2 に答える 2

53

iOS5およびOSX10.7より前では、スカラープロパティを自動生成できず、セッターとゲッターの実装を追加する必要がありました。これにより、ペナルティが発生します。自動生成されたプロパティが最適化されます。私は他の罰則を知りません。

スカラープロパティと非スカラープロパティはDBで同じタイプで表されるため、DBのサイズに変更はありません。 

これらのプロパティにアクセスする方法に応じて、スカラーをいつ使用するかを選択する必要があります。たとえば、コレクション(NSArray、NSSet、NSDictionary)に追加する場合は、スカラープロパティをcocoaオブジェクトでラップする必要があります。

于 2012-12-11T15:23:02.187 に答える
37

Core Dataは、整数、浮動小数点数、ブール値などの多くの一般的なデータ型をサポートしています。ただし、デフォルトでは、データモデルエディタはこれらの属性をNSNumber管理対象オブジェクトサブクラスのプロパティとして生成します。これにより、アプリケーションコード内のこれらのオブジェクトに対して、、、、または同様の呼び出しが無限floatValueに発生することがよくあります。boolValueintegerValueNSNumber

ただし、これらのプロパティを正しいスカラータイプ(たとえば、、、、、など)で指定することもでき、CoreDataでint64_t機能float_tBOOLます。NSManagedObjectXcodeには、ジェネレーターの保存ダイアログ(「プリミティブデータ型にスカラープロパティを使用する」)に小さなチェックボックスがあり、これを実行します。

出典:objc.io-データモデルとモデルオブジェクト

于 2014-04-22T05:48:37.523 に答える