ローカルの Core Data データベースがユーザーの IMAP 電子メール アカウントと同期されているアプリケーションを開発しています。すべての IMAP API 呼び出しを処理するためにMailCore ( http://libmailcore.com ) を使用していますが、いくつかの欠点があるようです。アプリでできるようにしたいことは次のとおりです。
- サーバーに最新の 50 通の電子メールのローカル コピーを用意する
- 最後のフェッチ以降にユーザーが受信したすべての新しいメールをダウンロードし、最大 50 件をデバイスに保持します。
- サーバー上で削除されたローカル電子メールを削除します。
メールを取得するために MailCore が提供する唯一のメソッドは次のとおりです。
- (NSArray *)messagesFromSequenceNumber:(NSUInteger)startNum to:(NSUInteger)endNum withFetchAttributes:(CTFetchAttributes)attrs
- (NSArray *)messagesFromUID:(NSUInteger)startUID to:(NSUInteger)endUID withFetchAttributes:(CTFetchAttributes)attrs
現在、サーバーから最新の電子メールを取得し、それらに関するすべての情報をダウンロードしています。次に、サーバーから最新の 50 個の UID を取得し、それらをローカル キャッシュと比較して、削除されたものを確認しています。これは非常に非効率に思えます。サーバーへの 2 回の往復を行わずに (少なくとも) 受信トレイを同期するより良い方法はありますか?