前提・実現したいこと
CoreDataで並び順を保存したい。ただし重複を許容したい。
実現したいことの詳細
「フォルダ」と「メモ」というエンティティがあり、フォルダ内のメモを並び替えができるようにして、その並び順を保存したいです。relationshipは、フォルダの中に複数のメモを入れることができるように、多対多の関係になってます。ただ、同じフォルダに同じメモを入れることができるようにしたいです。
試したこと,発生している問題
以下の2つの方法を試しましたが納得のいく結果が得られませんでした。
①ArrangementのOrderdにチェックマークを入れる
Orderdにチェックマークをつけることで、一応は順番が保存できました。ただし、この方法で用いるはNSOrderedSetは、「重複した要素は保存しない」という特徴があるらしく、同じメモを同じフォルダに複数入れることができませんでした。重複できるようにしたいのでこの方法は断念しました。
②並び順を表すIDを「メモ」エンティティに作る。
この方法を実装してる途中で、この方法だと、フォルダごとにメモに異なるIDを割り振れないことに気づきました。つまり、複数のフォルダに、とある1つのメモを入れたときに順番に不都合が生じるだろうということです。
CoreDataで重複を許して並び順を保存できる方法をご存じの方はいらっしゃいませんでしょうか?
追記
Realmのドキュメントから抜粋したものを用いて補足説明致します。
RealmのListの説明を抜粋したもの
Listオブジェクトは同じ(プライマリキーが同じオブジェクトであっても)Realmオブジェクトを複数格納できます。例えば、最初に空のListオブジェクトを作り、そのあと同じオブジェクトを3回に渡って追加したとします。するとListオブジェクトには同じオブジェクトがそれぞれ0番目、1番目、2番目に格納されます。
これと同じようなことをCoreDataで実現したいです。
重複というのは、同じフォルダーに同じメモを入れれるようにしたいということです。現状だと、主キーが同じメモは同じフォルダーに入れれませんでした。
コードを見せてもらわないと、これ以上はコメントできないという場合はおっしゃってください。コードを追記致します。
補足情報(FW/ツールのバージョンなど)
swift5.4
RealmのListを使えば重複を許して順番を保存することができるのはわかりますが、後でCoreDataとCloudKitを連携させる予定なので、Realmは却下しました。
回答1件
あなたの回答
tips
プレビュー