【问题标题】:iOS Select specific entries to display in tableiOS 选择要在表格中显示的特定条目
【发布时间】:2014-06-15 12:25:53
【问题描述】:

我有一个数组,其中包含多个字典。

格式如下:- 大批 - 指数 - DOW = 工作日 - 指数 - DOW = 周末 - 指数 - DOW = 工作日

我想用仅包含 DOW = Weekday 的那些字典中的数据填充表。

枚举这个的最快方法是什么?

请注意,数据将通过过滤器进行更改,然后重新加载表格。

【问题讨论】:

  • 抱歉,我忘记了格式被删除了。但感谢您的主要回答。效果很好。

标签: ios uitableview nsarray nsdictionary filtering


【解决方案1】:

您可以使用NSPredicate 过滤您的数组,如下所示:

NSArray *data = @[
     @{@"Dow":@"Weekday", @"One":@"Two"}    // Item 0
,    @{@"Dow":@"Weekend", @"Three":@"Four"} // Item 1
,    @{@"Dow":@"Weekday", @"Five":@"Six"}   // Item 2
];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"(Dow=='Weekday')"];
NSArray *res = [data filteredArrayUsingPredicate:pred];

上面的代码将保留NSArrays 项目0 和2,并删除项目1,因为它不包含将@"Dow" 设置为@"Weekday" 的条目。

上面的data 变量代表您示例中的预过滤数据。

【讨论】:

    【解决方案2】:

    我建议你阅读 Apple UITableViewDataSource 协议指南 here 或者 this 教程。

    基本上你会想要 -

    1. 覆盖 numberOfSectionsInTableView: 并返回表格中的部分数(如果不相关,则返回 0)。
    2. Ovveride tableView:numberOfRowsInSection: 在这里您可以在您的字典中“应用”所需的过滤器并返回您实际想要显示的正确行数。

    下次您更新过滤器并再次调用reloadTable 时,上述步骤将根据新过滤器正确过滤表。

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 1970-01-01
      • 2020-09-17
      • 2021-05-05
      • 2012-06-10
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多