我预计RSS Feed最终会包含几十个/几百个帖子.我目前的解决方案是读取整个RSS Feed并显示结果.但是我想只阅读前十个帖子(以防止它解析可能有数百个项目).然后在稍后的时间(例如当用户到达表的末尾时)来解析接下来的十个帖子.
所以我的问题是如何解析前十个帖子,然后解析接下来的十个帖子,然后解析接下来的十个帖子等等……
这是我用来获取所有帖子的内容:
- (voID)parseXMLfileAtURL:(Nsstring *)URL{ myArray = [[NSMutableArray alloc] init]; //convert the path to a proper NSURL or it won't work NSURL *xmlURL = [NSURL URLWithString:URL]; RSSParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL]; [RSSParser setDelegate:self]; [RSSParser parse];}- (voID)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError { //error}- (voID)parser:(NSXMLParser *)parser dIDStartElement:(Nsstring *)elementname namespaceURI:(Nsstring *)namespaceURI qualifIEdname:(Nsstring *)qname attributes:(NSDictionary *)attributeDict{ currentElement = [elementname copy]; if ([elementname isEqualToString:@"item"]) { //clear out our story item caches... item = [[NSMutableDictionary alloc] init]; }}- (voID)parser:(NSXMLParser *)parser dIDEndElement:(Nsstring *)elementname namespaceURI:(Nsstring *)namespaceURI qualifIEdname:(Nsstring *)qname{ if ([elementname isEqualToString:@"item"]) { // save values to an item,then store that item into the array... }}- (voID)parser:(NSXMLParser *)parser foundCharacters:(Nsstring *)string{ // save the characters for the current item...}- (voID)parserDIDEnddocument:(NSXMLParser *)parser { [mytable reloadData];}解决方法 在其他人不同的风格答案中,我想做出贡献,如果你的解析器花了很长时间来解析10到100之间的差异是一个重要的人类可测量的数量,那么你做错了.最好是:
>配置您的解析代码以查找减速(或找到更高性能的XML库)
>在后台线程上解析整个批次
>仅向用户显示前10个,
>随时显示内存中的其余部分.
这是一个双赢,因为一次解析它可以使代码更简单,更少的错误,并且一次“加载”(显示)一个RSS“页面”将是闪电般的快速,你的用户会爱你(见Instagram的例子关于伪造速度)
总结以上是内存溢出为你收集整理的ios – 使用NSXMLParser仅解析前十个帖子,然后分别解析下一个帖子全部内容,希望文章能够帮你解决ios – 使用NSXMLParser仅解析前十个帖子,然后分别解析下一个帖子所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)