【问题标题】:Populate a UITableView with data用数据填充 UITableView
【发布时间】:2009-08-29 16:21:37
【问题描述】:

首先,虽然我了解了一些基础知识,但我还是个新手。

我有一个分段的UITableView,我目前正在使用NSDictionary(用于分组)和 4 或 5 个不同的 NSArray(用于数据,其中一些在选择单元格时传递到下一个视图)来填充桌子。它可以工作,但它是一个很长的列表,在上下滚动UITableView 几分钟后,离开该视图并返回它,应用程序开始“减速”并最终冻结。我一直在做一些研究,发现我这样做的方式并不是最好的方式。我已经阅读了有关使用另一个对象来填充表的信息,该对象只会根据需要加载数据并且不会将该数据保存在内存中(这可能导致我的应用程序冻结)。

谁能帮我指出正确的方向来构建一个“数据对象”来存储我的数据,然后在我的UITableView 中使用它?我可以拿我的NSDictionariesNSArrays 并以某种方式将它们放在他们自己的班级中并调用那个班级吗?我会使用核心数据吗?还有其他建议吗?请注意,用户不能添加、更新或删除此数据。我唯一会更改数据的时间是添加更多数据(一条全新的记录)以使列表更长,并且可能偶尔一次,但很少由我更新或删除。

任何帮助将不胜感激。

【问题讨论】:

  • 我的猜测是它不是字典或数组。你能从你的视图控制器中发布cellForRowAtIndexPath: 方法吗?可能是您没有正确重用表格单元格。

标签: ios iphone uitableview


【解决方案1】:

确实,UITableViewController 与 CoreData 结合时效率最高。为此,您应该查看 NSFetchedResultsController。如果您想以一种简单的方式进入 CoreData,请使用 MagicalRecord。它非常易于使用且非常高效。

然而,值得注意的是,一个包含数个 NSArray 的 NSDictionary 填充了数千个 NSString 不会导致内存问题。您能够首先将其加载到内存中的事实表明您可以将整个数据结构保存在内存中。滚动时减速和冻结的事实意味着内存问题来自 UITableView 单元格实例化。

您应该检查以下几点:

  1. 你知道如何使用仪器吗?如果是这样,请检查内存泄漏。
  2. 您是否在 UITableViewController 中收到didReceiveMemoryWarning?我猜是这样。但是您要确定这不是线程阻塞问题。
  3. 您是否在 UITableViewCells 中使用图像?如果你有成千上万的图像,你肯定想使用 NSCache 来存储它。这将在需要时自动清除内存。
  4. 您是否使用自定义 UITableViewCells?由于滚动速度变慢,请检查自定义单元格是否没有绘制问题。
  5. 确保您正在出列单元格。这是在模板 UITableViewController 代码中完成的,但您可能出于某种原因将其删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多