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

Ale*_*lds 9 iphone parsing core-data libxml2 uitableview

什么是将大量XML从RESTful服务异步提取到Core Data存储中,以及从这个存储中快速填充的好方法UITableView

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

在将这些XML节点转换为托管对象的同时,我想UITableView依次生成行.比如说,一次50行.这是现实的吗?

根据您的经验,您如何完成此任务,以维护性能并处理数千行?是否有不同的,更简单的方法可以运行得更好或更好?

Lou*_*arg 14

当然,这是一个非常标准的事情.最简单的解决方案是在一个MOC上的后台线程中加载,并在主线程上运行UI并使用自己的MOC.每当你想要出现一大块数据时(例如50个条目),你就有了背景MOC save:.

假设你有前景MOC被绑定以合并更改(via mergeChangesFromContextDidSaveNotification:),那么无论何时保存后台MOC,前台MOC都将获得所有这些更改.假设您正在使用NSFetchedResultsController,它具有委托方法来处理其MOC中的更改,如果您使用Apple的示例代码,那么您可能已经正确设置了所有内容.

一般来说,除非你真的知道自己在做什么,并愿意花费大量时间来调整你的特定情况,否则CoreData会比你自己动手的任何东西都要快.您可以做的最重要的事情是确保缓慢的事情(如XML处理和同步闪存I/O引起save:)不在阻止用户交互的主线程上.

  • 我绝对可以(并且已经)直接使用SQLite3在特定工作负载上击败CD.但通常涉及的努力程度是淫秽的.通过使用CoreData,我最终得到了一个更好的应用程序,然后花了1/3的时间我保存调整我的应用程序的其他部分.我们不会在真空中编写代码.我已经学会了通过更好的方式来放弃一些绝对的理论性能并使用时间节省来对其他应用程序代码做出(更大的)实际性能改进.显然,具体细节因项目而异. (3认同)