gpt4 book ai didi

json - 从远程 JSON 文件设置 UITableViewCell 数据

转载 作者:行者123 更新时间:2023-12-02 08:52:23 25 4
gpt4 key购买 nike

我有代表城市列表(100 个城市)的 UITableView。

对于每个城市,我想调用特定的远程 (URL) JSON 来获取城市的天气信息,并为 UITableView 中的每个城市单元格填充响应数据。

当我运行应用程序时,我希望尽快查看我的表,因此我不需要等待所有 json 响应。我希望信息得到异步(当加载特定的 json 时,在 UITableView 中设置相应城市单元格的信息)。

注意:调用单独的远程 JSON 文件对我来说很重要。


哪种技术最适合这项任务?

最佳答案

我将从以下方法开始:

创建一个数据结构来保存城市信息,包括:

  • 您的数据服务的路径,
  • 服务调用“状态”(空闲、等待、完成、错误),
  • 天气信息(来自服务调用返回的 JSON)

当你第一次展示表格时,你会想要:

  • 初始化您的数组(上述数据结构),
  • 异步启动每个服务调用,
  • 将每行(城市)状态设置为等待。

您可能还想返回一个带有城市名称(如果您已经有了)和旋转事件指示器的自定义 UITableCellView。这将是您获得快速加载时间(不等待服务完成)并提供一些数据正在加载的视觉指示的最佳选择。

每个服务调用都应该使用 ViewController 作为其委托(delegate);您将需要一个关键字段,以便当服务返回时,它们可以识别它们与哪个行/城市相关联。

当每个服务完成并调用委托(delegate)时,它会将数据发送到 ViewController,ViewController(反过来)将更新数组并启动 UITableView 更新。

在我看来,UITableView 更新是最困难的部分。通常,单元格在可见时被绘制或更新;表格预取所有可见单元格的几何图形,然后在准备好绘制每个单元格时查询实际内容;因此,您更新单元格的策略将取决于表格的使用方式。

  • 如果您的单元格几何形状发生变化,您很可能需要重新绘制整个表格;一想到 50 次同时重绘 UITableView 会对您的应用产生什么影响,我就不寒而栗,因此您可能需要设置时间阈值以“分块”更新并更智能地处理绘图。
    [theTableView reloadData]会导致整个表格重新查询和重绘。

  • 如果您的单元格几何形状没有改变,您可以尝试更外科地只更新可见单元格(不可见单元格不是问题,因为当它们变得可见时将查询它们的数据)。
    [theTableView visibleCells] 返回可见单元格数组;当您的服务调用返回时,您可以更新数据,然后搜索数组以查看相关单元格是否可见;如果是,您可能需要向特定的 UITableCellView 发送 setNeedsDisplay 消息。

setNeedsDisplaysetNeedsLayout 和 'reloadData' 在 http://iosdevelopertips.com/cocoa/understanding-reload-repaint-and-re-layout-for-uitableview.html 有很好的解释。 .

How to refresh UITableViewCell? 有一个相关的 SO 问题

最后,您可能希望在服务委托(delegate)错误例程中实现一些更新逻辑,这样您就不会创建无休止的旋转事件指示器。

关于json - 从远程 JSON 文件设置 UITableViewCell 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7550972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com