MailCore API を使用して電子メールに接続し、メッセージを配列にダウンロードしてから、それらのメッセージを配列に取り込んでテーブル ビューに表示します。
サーバーからすべてのメッセージをダウンロードするコード (公式の MailCore Web サイトから取得) は次のとおりです。
messageSet = [inbox messagesFromUID:1 to:0 withFetchAttributes:CTFetchAttrEnvelope];
基本的に、これはサーバーからすべてのメッセージをダウンロードします。配列の内容を NSLog で報告することでこれを確認できます。すべてのメッセージがそこにあります。
これは、最初のメッセージ (インデックス 0) のみを受け取り、それをメッセージ配列に追加するコードです。
CTCoreMessage *msg = [messageSet objectAtIndex:0];
BOOL isHTML;
isHTML = YES;
messages = [[NSMutableArray alloc] init];
sendernames = [[NSMutableArray alloc] init];
[messages addObject:[msg bodyPreferringPlainText:&isHTML]];
NSString *sender = [NSString stringWithFormat:@"%@", [msg sender]];
[sendernames addObject:sender];
[tableView reloadData];
繰り返しになりますが、これは最初のメッセージであるインデックス 0 のメッセージを取得し、それをメッセージ配列に追加します。送信者の名前を取得して送信者の配列に追加するコードもありますが、それは無視してください。
cellForRowAtIndexPath メソッドのコードは次のとおりです (セルの要素に設定している値を切り取っただけです)。
cell.nameText.text = [sendernames objectAtIndex:0];
cell.messageText.text = [messages objectAtIndex:0];
ご覧のとおり、インデックス 0 オブジェクト、最初のメッセージ、以前に追加したものと同じものが表示されます。
最後に、行数を設定するコードを次に示します。これは、すべてのメッセージをダウンロードする messagesSet 配列に基づいています。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [messageSet count];
}
私の質問は、次の 2 つのことを行うようにコードを変更するにはどうすればよいかということです。
1.) 最初のオブジェクトだけでなく、すべての DOWNLOADED オブジェクトを配列に追加します。2.) メッセージ配列内のすべてのオブジェクトを表示するように cellForRowAtIndexPath コードを変更します。
よろしくお願いします!