0

4種類の属性をCoreData内の32ビットintに格納するのはやり過ぎですか?または、単にそれらごとに個別の属性を作成する必要がありますか?(論理演算子を使用して設定/取得します)。

既存のオブジェクトに新しいエンティティを追加する予定です。このオブジェクトには、約14個の属性(注文用の「インデックス」属性を含む)を持つ200〜400個のアイテムが含まれます。常に1つのセットのみが操作または表示されます。

元に戻すサポートを維持する必要があります(iPhoneでのコアデータオブジェクト挿入のパフォーマンスを向上させる方法を参照してください) 。

複数の属性を1つのフィールドに格納すると、これを約8つの属性にまで下げることができる場合があります。検索性の問題を除けば、かなりのスペースを節約できますか?

また、週に約1〜3の割合で増加するアイテムの増加するリストに、400個のオブジェクトのセットを格納することは不合理ですか?

何千ものアイテムをコアデータに保存している人がいると聞いているので、おそらく私は妄想的です。長期的には、おそらくiCloudにアーカイブのエクスポートオプションを提供する必要があると思います。

4

1 に答える 1

1

つまり、14 個の属性を持つ 400 個のオブジェクトがあり、それらを個別の整数として格納するか、32 ビット (4 バイト) の値に結合することができるということですか?

400 x 14 x 4 バイト = 22,400 バイト

それはまったく大きなスペースではありません。これを半分にすると、11K を節約できますが、これらの値をエンコードおよびデコードするために生成する余分なコードのサイズによって、おそらく小さくなります。

しかし、私の言葉を鵜呑みにしないでください。Core Data に値を詰め込む小さなテスト プログラムを作成し、それをプロファイラーで実行して何が起こるかを確認してください。

また、Core Data が内部で使用しているものであるため、SQLite とそれが値を格納する方法についても読むことができます。

私の直感では、あなたは偏執狂的で、コードをいじってもあまり役に立たないでしょう。さらに悪いことに、サイン拡張でシフトしていることを忘れたときに、本当に微妙なバグを導入するのに最適な方法になります. (そして、ちょっといじるコードを書くのが大好きです!)

于 2012-06-03T22:53:05.047 に答える