如何使用多个密钥的NSDictionary的NSArray填充UITableView

时间:2014-09-06 18:38:47

标签: ios objective-c uitableview nsdictionary

我有NSDictionary的NSArray:

所以我的数组叫做messagesArray,它实际上是一个字典数组,因为我不得不使用字典方法按发件人名称对邮件进行排序。

以下是我的messagesArray的样子:

    {
    MessageBody1 = nmnmn;
    MessageBody2 = kkkjk;
    MessageBody3 = hbjhbjbb;
    MessageBody4 = "Kjnhkbjhbjh ";
    MessageBody5 = "N m jbjbhb";
    MessageBody6 = "";
    MessageBody7 = "Test test test";
    MessageBody8 = "";
    MessageBody9 = "This is a test.";
    senderName = testUser;
    }

我如何使用所有" MessageBody"填充表格视图?密钥考虑到每个密钥增加1?

2 个答案:

答案 0 :(得分:0)

首先,您说您发布了messagesArray的代码,但是数组应该用括号( )包围,而不是大括号{ }(大括号用于词典),但是我会这样做假设这是一个错字。

您应该使用表格视图indexPath来获取cellForRowAtIndexPath:中的正确对象。像这样:

cell.textLabel.text = messagesArray[indexPath.row];

但是,如果你确实意味着messagesArray是一个字典数组,并且你发布的代码是字典的一个例子,那么分割每个{{1}的方法并不是很好。根据你的布局进入自己的单元格。相反,这样的适当布局将是:

MessageBody

然后,您可以返回> messagesArray //holds all the messages > msgArray //one for each message > MessageBody strings (however many there are) 表格视图中的部分数量,messagesArray.count表示给定部分中的行数。

每个单元格的文本将类似于:

[messagesArray[section] count]

答案 1 :(得分:0)

它似乎只是一个字典的数组,你想要(我认为)表中的值,按键的数字部分排序。我们可以用数据源方法来解决这个问题,但是将数据更改为数据源方法所需要的更简单,这是一个数组......

// add this in your class's private interface
@property(strong,nonatomic) NSMutableArray *datasourceArray;

NSDictionary *messagesArray = // your messagesArray that's really a dictionary
self.datasourceArray = [NSMutableArray array];

NSArray *keys = [[messagesArray allKeys] sortedArrayUsingSelector:@selector(compare:)];
for (NSString *key in keys) {
    [datasourceArray addObject:dictionary[key]];
}

这将从字典中获取键,对它们进行词法排序,然后抓取每个值(按排序顺序)并将它们放入datasourceArray中。

现在您的数据源方法很简单......

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.datasourceArray.count;
}

cellForRowAtIndexPath:中,使用以下内容查找您的单元格数据:

NSString *message = self.datasourceArray[indexPath.row];