2

自動インクリメント インデックスによるコア データの並べ替え?

Core Data には明示的に自動インクリメント ID がありません。そのため、自己実装コーディングなしで自動インクリメント ID でソートする方法はありません (これは sqlite3 で直接簡単に実行できます)。

私が見つけたもの

ObjectID : ただし、自動インクリメント ID はありません。 **NSSortedSet : iOS 5.0/OS X 10.7+、お勧めできません

または私はこれをしなければなりません

**entityID のような属性を追加し、コードで設定してから安全にします

アプリのトラブル

質問に対する4つの回答A、B、C、D、回答はシーケンシャルです。entityIDを追加して、増分値を設定することを考えています。次に、SORTに使用します

@interface NSQuestion : NSManagedObject

@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSNumber * questionID;
@property (nonatomic, retain) NSSet *answers; 
@property (nonatomic, retain) NSAnswer *selectedAnswer;
@end

添加

モデル NSQuestion を xcdatamodeld からエクスポートしました。*なぜNSArray の回答ではなく NSSet の回答なのか不思議です

良い方法?

他の誰かがこのような同じ質問をしている場合、あなたの本当の解決策は何ですか?

4

2 に答える 2

3

内部オブジェクトIDに基づいて並べ替えることができますが、固有の順序(入力時間など)がないため、並べ替えは任意になります。

挿入された順序に基づいて順序付けする場合は、いくつかのオプションがあります。

残念ながら、あなたは本当にあなたの本当の目標を指定しなかったので、あなたを最良の方向に向けることは難しいです。

挿入された順序に基づいてオブジェクトにのみアクセスする場合は、順序セットを使用できます。すべてのオブジェクトに対して1対多の関係を持つ「ルート」オブジェクトを用意するだけです。モデルの「注文済み」ボックスをチェックします。

これで、その関係にオブジェクトを追加するだけで済みます。それは彼らの注文を維持します、そしてあなたが彼らを絶えず再注文していないのであなたはあまり多くのパフォーマンスを払うことはありません。

または、きめ細かいタイムスタンプを使用して、挿入時に各オブジェクトに追加することもできます。次に、それに基づいて並べ替えます...挿入された順序でオブジェクトが表示されます。

または、単純なカウンターを使用することもできます。データベースからカウンタオブジェクトをロードします。新しいオブジェクトにカウンターの現在の値を指定し、新しいオブジェクトごとにカウンターをインクリメントします。管理対象オブジェクトクラスにカテゴリを配置してオブジェクトを作成すると、IDが自動的に作成されます。

あなたの問題に対する解決策の負荷...あなたが実際に達成したいことに応じて。

そうそう...現在、順序付けられた関係はiCloudではサポートされていません...

于 2012-05-08T19:07:24.703 に答える