我将在这里快速切入正题,我正在使用 MailCore API 连接到电子邮件并将消息下载到一个数组中,然后将这些消息放入数组中并将它们显示到一个表格视图中。
这是将从服务器下载所有消息的代码(从 MailCore 官方网站检索):
messageSet = [inbox messagesFromUID:1 to:0 withFetchAttributes:CTFetchAttrEnvelope];
基本上,这将从服务器下载所有消息,我可以通过使用 NSLog 报告 Array 的内容来确认这一点,所有消息都在那里。
现在这里是只接受第一条消息(索引 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];
}
我的问题是,如何修改我的代码来做两件事:
1.) 将所有已下载的对象添加到数组中,而不仅仅是第一个。2.) 修改 cellForRowAtIndexPath 代码以显示消息数组中的所有对象。
提前非常感谢!