swiftでRealmを利用してiOSアプリを開発しております。
少し複雑な質問になってしまうのですが、何卒よろしくお願いいたします。
今回の質問は、WebAPIのページングに対してのRealmとUITableView利用してどのように対応するか、というものになります。
(ここでのページングとは、ページ数をパラメータとして受け取り、それに応じて50個ずつなどにリソース分けてをレスポンスを行う仕様のことを指しています。)
前提として、アプリの構成としては、WebAPIからデータを取得し、RealmをiOSの一時保存用として利用しております。
現在、iOS側では、APIからのレスポンスを待っている間、Realmに入っているデータをキャッシュ的な形で利用し、ユーザーに表示しております。
レスポンスが返ってきた際に、データを更新しようと思っております。
その方法として以下の2つ考えついたのですが、どちらも不十分でした。
** 一つは、一度既存データをすべて削除した上でレスポンスのデータを保存し、TableViewをリロードするというものです。 **
こちらの場合は、データの整合性が保たれるのですが、すでに表示されているデータの数よりもレスポンスのデータの数が少なかった場合にTableViewの表示が一気に変更されてしまうためUXを損ねてしまうと考えました。(ユーザーが100件目を見ているときに50件のみのレスポンスだった場合、ユーザーが見ているデータは仮に削除されていなかったとしても継続して見ることはできなくなる。)
** もう一つは、レスポンスデータに基づき、既にあるデータは更新、無いデータは追加する、といったものです。**
こちらのの場合は、一気に変更されてUXを損ねてしまうことは少ないのですが、APIからのレスポンスには今存在するもののみが含まれており、削除についての情報はないので、削除されているはずの投稿が永遠に残り続けてしまうリスクがあると考えました。
上記の2つともデメリットがあり、どちらの解決策も採用しかねております。
何か上記の他にいい方法がございましたらご教授いただけると大変助かります。
何卒よろしくお願いいたします。
※API側の仕様変更も可能です。
あなたの回答
tips
プレビュー