2016-05-20 12 views
1

OperationEntityというエンティティがあります。それはOperationInputと多対多の関係にあります。コアデータに順次データを格納する方法は?

enter image description here

私が保存されているすべてのOperationEntityを表示するテーブルビューコントローラを持っています。ユーザがセルの1つをタップすると、別のテーブルビューコントローラに行くセグが実行されます。そのテーブルビューコントローラは、OperationInputのすべてをOperationEntityと表示します。

Xcodeが私のために生成したNSManagedObjectサブクラスでは、availableInputsプロパティがタイプNSSet?であると宣言されています。私はセットがその要素の順序を維持していないことを知っています。これは私がこの順に入力を保存するかもしれないことを意味します

a 
b 
c 

しかし、私は戻ってそれを取得する場合、私はこの順序でそれを得るかもしれない代わりに

c 
a 
b 

が、私は、入力がでなりたいです彼らが救われたのと同じ順序!

この問題を解決するにはどうすればよいですか?

idプロパティをOperationInputに追加すると考えました。私が新しいものを保存するたびに、IDを増やします。私がそれをフェッチするとき、私はidに従って配列をソートします。しかし、私はこれよりも良い方法があると確信しています。

多分NSSet?からNSArray?に変わりますか?それはうまくいかない、それ?

私はStack Overflowで質問する人はいませんでした。

+0

*これまでに質問と回答がありました。あなたは '[core-data] preserve order'を検索するときにもっと答えを見つけるでしょう。 –

+0

@MartinRしかし、その質問は時代遅れのようです。 Erik Johanssonの答えから、これは 'id'を追加するよりも良い方法で実行できることがわかります。 – Sweeper

+0

参照された質問に対する受け入れられた答えは、順序付けされた関係についても言及しています。*「iOS 5をターゲットにできるならば、任意の順序付けされたコアデータ関係に新しいNSOrderedSet機能を使用できます。それはまさにErikが以下に示唆したものです。 - idフィールドを追加することも良い解決策であり、順序付けされた関係は扱いにくい可能性があるため、利点があります。 –

答えて

2

データモデルインスペクタでリレーションシップとルックを選択すると、オプションarrangementが表示されます。それを設定すると、順序を維持するNSOrderedSetがあります。

enter image description here

+0

もう一度NSManagedObjectサブクラスを生成する必要があります。 – Sweeper

+0

はい、または既存のものを更新してください。 'NSOrderedSet'に対して' NSSet'を入れ替えます –

関連する問題