私は、解決できた非常によく似た問題を処理するアプリに取り組んできました。複雑な解決策を期待していましたが、それは本当に簡単でした。これを解決する方法は次のとおりです。
1)新しいアイテムを受け取る新しい配列を作成し、それを「moreItems」と呼びます。もちろん、それを合成します。
@property (nonatomic, readonly) NSMutableArray *moreItems;
2)TableViewまたはCollectionViewにリンクされているViewControllerのviewDidLoadで、この配列を割り当て/初期化します。
moreItems = [[NSMutableArray alloc] init];
3)次に、既存の配列を追加する必要があります。これは、作成したばかりの「moreItems」という名前の新しい配列に「アイテム」であるとしましょう。'addObjectsFromArray'を使用してこれを行うことができます
[moreItems addObjectsFromArray:[channel items]];
「チャネルアイテム」には、以前に受け取ったオブジェクトが含まれ、これらのアイテムが「moreItems」と呼ばれる新しく作成された配列に追加されます。いくつかのWebサービスからデータを収集していると想定しているので、connectionDidFinsihLoadingでこのステップを実装できます。
4)TableView / CollectionViewのデータソースを変更し、「moreItems」という新しい配列に置き換えます。
5)次の問題は、テーブルビュー全体をリロードしたくないので、新しいアイテムを処理したいということです。この機能を使用するには、アイテムを永続化する必要があります。アーカイブまたはコアデータは、使い慣れたものであれば何でも使用できます。
6)すでにフェッチされているアイテムは、アーカイブで言うと、それらを永続化する必要があります。また、ユーザーがアプリを開いたときに、ウェブサービスで更新されたアイテムをさらに取得しているときに、それらをテーブルビューに表示します。したがって、最初に永続化されたアイテムをすぐに表示してから、新しいアイテムを処理します。
7)いくつかの一意のオブジェクトを探す必要があります。私の場合は、すべてのアイテムに異なるリンクがあり、これに基づいて並べ替えて処理できるため、「リンク」でした。また、使用する必要があります
- (BOOL) isEqual:(id)object
Webサービス上のリンクとすでにテーブルビューにあるリンクを比較します。この手順が必要なのは、アプリがすでにテーブルビューにあるリンクを持つアイテムを追加しないためです。
8)各アイテムに関連付けられている日付がある場合は、その日付を使用してアイテムを並べ替え、「sortUsingComparator」を使用して新しいアイテムを一番上に表示できます。
9)また、「[[self tableView] insertRowsAtIndexPath:rows withRowAnimation:UITableViewRowAnimationTop」を使用して、新しいアイテムが以前のアイテムの上に追加されたことをユーザーに示す効果を持たせる必要があります。
お役に立てれば。