CoreData: 追加した object で、最近追加したものを上にするには・・・

CoreData に Orderd というチェックがあり、チェックしておくと detail の tableView で追加した順で並んで表示されるので便利。でも、detail の record は tableView で表示するのですが、record 数が多くなると、最近追加したものが上にある方が好ましいのは誰しも思うところ。

これを実現するにはどうするのかよく分からなかったんですが、ようやく分かりました。結論は、add ではなくて insert を使えということになります。こんな感じ。

変更前:        [_detailItem addToEntityObject:newEntity];

変更後:        [_detailItem insertObject:newEntity inToEntityAtIndex:0];

ポイントは、add...  の場合、指定する必要のなかった index を指定する必要があります。一番上にしたいなら、常に index 0 を指定することになります。

ちなみに、in....AtIndex の ... 部分は relations で命名したものが使われます。ので、途中まで入力して tab キーを押して補完してもらうのがよいと思います。

って、これ、初めは表示するときにどうにかするんじゃないかと思って色々試行錯誤したんだけど上手くいかなくて、保存するときに method が用意されている、という顛末だったんで、調べるのに結構時間かかった・・・