CoreData Orded の処理

CoreData をいじっていたら、Orderd というチェックボックスがあることに気づいた。

名前からして、n 側の並び順を維持してくれるんじゃないかと期待が高まります。早速使ってみたら error 発生。なんで?

通常、n の record を取り出すには、array に突っ込みます。こんな感じで。

        NSArray* relatedRecords = [_detailItem.toRelateMany allObjects];

 

でも、並び順を維持するには、array ではダメで、NSOrderdSet を使う必要があるのだ。

        NSOrderedSet* relatedRecords = [[NSMutableOrderedSet alloc]initWithOrderedSet:_detailItem.toRelateMany];

 

それはよいのですが、class が違うので中身を取り出す時の method も、違う点を見逃してはならない。array の時は allObjects、orderedSet の時は initWithOrderedSet: となる。

ふぅぅ。