用字典数据填充 UITableView

发布于 2024-11-18 05:48:36 字数 402 浏览 0 评论 0原文

我的情况:

我有一个 NSDictionary 对象。由 NSNumber 键入。值是自定义对象。

我想将字典值放入 UITableView 中。据我所知,UITableView 要求对其源集合建立索引,因此当调用 cellForRowAtIndexPath 时,您可以使用 indexPath 来查找值。

问题是,当调用 didSelectRowAtIndexPath 时,我想从字典中查找该对象,但我没有密钥。我所拥有的只是indexPath.row。

我的解决方案: 我创建了一个键数组。我使用数组的索引来获取键,然后使用键从字典中获取对象。

我的问题: 这看起来有点草率,特别是因为这是一项例行任务(填充 UITableView,然后在有人触摸单元格时做出响应)。这是它设计的工作方式还是有更好的方式?

My Situation:

I have an NSDictionary object. Keyed by NSNumber. Values are custom objects.

I want to put dictionary values into a UITableView. As far as I can tell, UITableView requires that its source collection be indexed so when cellForRowAtIndexPath is called, you can use the indexPath to look up the value.

Problem is that when didSelectRowAtIndexPath is called, I want to look up the object from the dictionary, but I don't have the key. All I have is the indexPath.row.

My solution:
I create an array of keys. I use the index of the array to get the key, and then use the key to get the object out of the dictionary.

My problem:
This seems kind of sloppy especially since this is a routine task (populating the UITableView and then responding when someone touches a cell). Is this the way it's designed to work or is there a better way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

々眼睛长脚气 2024-11-25 05:48:36

问题是字典没有顺序,而表视图有。 这个问题的答案应该会给你一些处理这个问题的替代方法的想法。

The problem is that dictionaries don't have an order, while a table view does. The answers to this question should give you some ideas for alternative ways of handling this.

绝影如岚 2024-11-25 05:48:36

正如另一个答案中提到的, NSDictionary 的键没有排序,因此不能保证您按特定顺序获取行。也就是说,将字典与 UITableView 结合使用非常容易。

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //  tableview cell setup

    NSArray* keys = [self.data allKeys];

    cell.textLabel.text = [self.data objectForKey:[keys objectAtIndex:indexPath.row]];

    return cell;
}

如果您需要根据您在 NSDictionary 中输入的方式对列表进行排序,Cocoa With Love 的 Matt Gallagher 提供了一个优雅的解决方案,他对 OrderedDictionary 的看法。您可以在此处阅读相关内容。

As mentioned in another answer, an NSDictionary's keys are not ordered, therefore you are not guaranteed to get the rows in a particular order. That said, it is quite easy to use a dictionary for use with a UITableView.

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //  tableview cell setup

    NSArray* keys = [self.data allKeys];

    cell.textLabel.text = [self.data objectForKey:[keys objectAtIndex:indexPath.row]];

    return cell;
}

If you need the list to be ordered according to how you entered them into the NSDictionary, Matt Gallagher from Cocoa With Love offers an elegant solution with his take on OrderedDictionary. You can read about it here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文