iphone - REST -> XML -> 核心数据 -> UITableView 的好策略吗?

标签 iphone parsing uitableview core-data libxml2

将大量 XML 从 RESTful 服务异步拉入核心数据存储,并从该存储动态填充 UITableView 的良好实践是什么?

我正在考虑使用 libxml2 的 xmlParseChunk() 函数来解析传入的 XML block ,并在节点进入时将节点及其子节点转换为相关的托管对象。

在这些 XML 节点转换为托管对象的同时,我想依次生成 UITableView 行。假设一次 50 行。这现实吗?

根据您的经验,您如何完成此任务、保持性能并处理可能的数千行?是否有不同的、更简单的方法同样有效或更好?

最佳答案

当然,这是一个非常标准的事情。最简单的解决方案是在一个 MOC 上的后台线程中进行加载,并让 UI 在具有自己的 MOC 的主线程上运行。每当您获得想要显示的一大块数据(例如 50 个条目)时,您就有后台 MOCsave:

假设您已配置了前台 MOC 来合并更改(通过 mergeChangesFromContextDidSaveNotification:),那么每当您保存后台 MOC 时,前台 MOC 都会获取所有这些更改。假设您正在使用 NSFetchedResultsController,它具有委托(delegate)方法来应对其 MOC 中的更改,并且如果您正在使用 Apple 的示例代码,那么您可能已经正确设置了所有内容。

一般来说,CoreData 会比您自己构建的任何东西都要快,除非您真的知道自己在做什么并且愿意花费大量时间针对您的具体情况进行调整。您可以做的最重要的事情是确保主线程上不会出现缓慢的事情(例如 XML 处理和由 save: 引起的同步闪存 I/O),从而阻止用户交互。

关于iphone - REST -> XML -> 核心数据 -> UITableView 的好策略吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1494075/

相关文章:

iphone - iPhone 中旋转后 UIView 框架的奇怪行为

iphone - 发布数据但获取方法 json -ios

c++ - 如何捕获 sscanf 字符串的长度?

c - strtok 用于 GPS 解析,无法识别字符串

ios - 当前可见 View Controller 检查

c++ - 使用 Boost.Spirit 在 C++ 中解析 SQL 查询

ios - 无法在 iPad 上的 UITableView 中选择行

ios swift - TableView 单元格动态高度取决于设备

ios - 基类实现tableView时如何使用UITableViewAutomaticDimension :heightForRowAtIndexPath:

ios - 按下后退按钮,当我将 View Controller 从堆栈中弹出时丢失我的自定义 UIToolBar