繁体   English   中英

显示数组中的所有对象?

[英]Displaying all objects from array?

我将在这里快速讲究,我使用MailCore API连接到电子邮件并将消息下载到数组中,然后将这些消息放入数组中并显示在表视图中。

这是将从服务器下载所有消息的代码(从MailCore官方网站检索):

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处接收消息,这是第一条消息,并将其添加到messages数组。 我那里也有获取发件人名称并将其添加到发件人数组的代码,请忽略该代码。

这是我的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代码以显示messages数组中的所有对象。

非常感谢!

好吧,首先,您遍历数组并以此填充数组

for (CTCoreMessage *msg in messageSet) {
    [messages addObject:[msg bodyPreferringPlainText:&isHTML]];
    NSString *sender = [NSString stringWithFormat:@"%@", [msg sender]];
    [sendernames addObject:sender];
}

然后在行的单元格中,按照您的操作进行操作,但不要在索引传递时为对象传递0:indexPath.row

希望这可以帮助。

支持表的模型实际上是messageSet。 您将其分配给服务器调用的结果。 只需在您的委托方法中使用它即可:

  1. 下载完成后,调用[self.tableView reloadData];
  2. numberOfRowsInSection:可以return messageSet.count;
  3. cellForRowAtIndexPath:将为每个可见的indexPath顺序调用。 它不需要通过[messageSet objectAtIndex:indexPath.row];一次处理所有消息[messageSet objectAtIndex:indexPath.row];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM