NSXMLParser将两个元素添加到一个TableView单元中

罗伯特

我正在尝试使用来自几个单独的RSS供稿的文章标题NSXMLParser填充UITableView

for (NSString* feedString in [[NSUserDefaults standardUserDefaults] objectForKey:@"RSSFeeds"])
{
    NSURL *url = [NSURL URLWithString:feedString];
    parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
    [parser setDelegate:self];
    [parser setShouldResolveExternalEntities:NO];
    [parser parse];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{    
    element = elementName;

    if ([element isEqualToString:@"item"])
    {        
     item    = [[NSMutableDictionary alloc] init];
     title   = [[NSMutableString alloc] init];
     link    = [[NSMutableString alloc] init];
    }
}

如果只有一个RSS提要,这似乎很好用,但是一旦有多个RSS提要,则第二个提要中的第一个标题将附加到第一个提要中的最后一个标题,并且它们在表视图中共享相同的单元格。

我认为此方法是问题的核心,但正在努力使其正常工作:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if ([element isEqualToString:@"title"])
    {
        [title appendString:string];
    }

    else if ([element isEqualToString:@"link"])
    {
        [link appendString:string];
    }
}

我很欣赏我可能忽略了一些显而易见的事情,但任何指针都将不胜感激。

我的didEnd代码:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{    
  if ([elementName isEqualToString:@"item"])
  {
    [item setObject:title forKey:@"title"];
    [item setObject:link forKey:@"link"];
    [feeds addObject:[item copy]];
  }
}

- (void)parserDidEndDocument:(NSXMLParser *)parser
{    
    [self.tableView reloadData];
}
staticVoidMan

注意:不是最优化的解决方案,但应该可以使用(我稍后会对其进行编辑)

for (NSString* feedString in [[NSUserDefaults standardUserDefaults] objectForKey:@"RSSFeeds"])
{
    NSURL *url = [NSURL URLWithString:feedString];
    parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
    [parser setDelegate:self];
    [parser setShouldResolveExternalEntities:NO];
    [parser parse];

    //declare "NSMutableString *strCurrent;" in the .h of this class
    strCurrent = [NSMutableString alloc] init];
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [strCurrent appendString:string];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
                                        namespaceURI:(NSString *)namespaceURI
                                       qualifiedName:(NSString *)qName
                                          attributes:(NSDictionary *)attributeDict
{    
    if ([elementName isEqualToString:@"item"]) {
        item = [[NSMutableDictionary alloc] init];
    }

    if ([elementName isEqualToString:@"title"]) {        
        strCurrent = [[NSMutableString alloc] init];
    }

    if ([elementName isEqualToString:@"link"]) {        
        strCurrent = [[NSMutableString alloc] init];
    }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
                                      namespaceURI:(NSString *)namespaceURI
                                     qualifiedName:(NSString *)qName
{    
    if ([elementName isEqualToString:@"title"]) {
        [item setObject:strCurrent forKey:@"title"];
    }

    if ([elementName isEqualToString:@"link"]) {
        [item setObject:strCurrent forKey:@"link"];
    }

    if ([elementName isEqualToString:@"item"]) {
        [feeds addObject:[item copy]];
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Sprite Kit-将两个物理物体添加到一个SKNode

来自分类Dev

将两个脚本合并为一个新脚本(将列添加到csv)

来自分类Dev

将一个项目添加到链接列表会创建两个项目吗?

来自分类Dev

NSXMLParser将两个元素添加到一个TableView单元中

来自分类Dev

如何将两个对象作为一个元素添加到向量?

来自分类Dev

通过JavaScript将两个按钮添加到一个div

来自分类Dev

将类添加到具有两个元素的变量中存储的元素

来自分类Dev

将另一个类中的元素添加到数组列表中

来自分类Dev

尝试将2个文件添加到要读取的单独列表中,我需要将两个文件合并为一个列表

来自分类Dev

将两个不同文件中的JSON值添加到一个文件中

来自分类Dev

函数中的add()仅将两个元素添加到列表中

来自分类Dev

根据R中的两个匹配条件,将值从一个数据帧添加到另一个数据帧

来自分类Dev

将一个元素添加到多维数组

来自分类Dev

将一个xml元素添加到另一个xml中

来自分类Dev

从最后一个元素开始按顺序将class添加到元素的集合中

来自分类Dev

将数据添加到另一个类的TableView中

来自分类Dev

使用PostgreSQL将两个选择查询的结果添加到一个表行中

来自分类Dev

遍历两个列表并添加到结果列表将返回一个空列表。为什么?

来自分类Dev

如何将两个对象作为一个元素添加到向量?

来自分类Dev

将多个IF公式添加到一个单元格中

来自分类Dev

通过JavaScript将两个按钮添加到一个div

来自分类Dev

ng-repeat角遍历数组时将两个元素添加到div中,而不是一个元素

来自分类Dev

将类添加到具有两个元素的变量中存储的元素

来自分类Dev

如何将两个已命名的复选框添加到一个单元格

来自分类Dev

将两个不同类型的列表添加到另一个列表中

来自分类Dev

如何将两个mysql表列添加到datagridview中的一列?

来自分类Dev

将两个字典值合并为一个,然后将其添加到Python中的另一个字典中

来自分类Dev

matplotlib - 如何将两个标签添加到一个散点图

来自分类Dev

如何一次将一个元素多次添加到数组中

Related 相关文章

  1. 1

    Sprite Kit-将两个物理物体添加到一个SKNode

  2. 2

    将两个脚本合并为一个新脚本(将列添加到csv)

  3. 3

    将一个项目添加到链接列表会创建两个项目吗?

  4. 4

    NSXMLParser将两个元素添加到一个TableView单元中

  5. 5

    如何将两个对象作为一个元素添加到向量?

  6. 6

    通过JavaScript将两个按钮添加到一个div

  7. 7

    将类添加到具有两个元素的变量中存储的元素

  8. 8

    将另一个类中的元素添加到数组列表中

  9. 9

    尝试将2个文件添加到要读取的单独列表中,我需要将两个文件合并为一个列表

  10. 10

    将两个不同文件中的JSON值添加到一个文件中

  11. 11

    函数中的add()仅将两个元素添加到列表中

  12. 12

    根据R中的两个匹配条件,将值从一个数据帧添加到另一个数据帧

  13. 13

    将一个元素添加到多维数组

  14. 14

    将一个xml元素添加到另一个xml中

  15. 15

    从最后一个元素开始按顺序将class添加到元素的集合中

  16. 16

    将数据添加到另一个类的TableView中

  17. 17

    使用PostgreSQL将两个选择查询的结果添加到一个表行中

  18. 18

    遍历两个列表并添加到结果列表将返回一个空列表。为什么?

  19. 19

    如何将两个对象作为一个元素添加到向量?

  20. 20

    将多个IF公式添加到一个单元格中

  21. 21

    通过JavaScript将两个按钮添加到一个div

  22. 22

    ng-repeat角遍历数组时将两个元素添加到div中,而不是一个元素

  23. 23

    将类添加到具有两个元素的变量中存储的元素

  24. 24

    如何将两个已命名的复选框添加到一个单元格

  25. 25

    将两个不同类型的列表添加到另一个列表中

  26. 26

    如何将两个mysql表列添加到datagridview中的一列?

  27. 27

    将两个字典值合并为一个,然后将其添加到Python中的另一个字典中

  28. 28

    matplotlib - 如何将两个标签添加到一个散点图

  29. 29

    如何一次将一个元素多次添加到数组中

热门标签

归档