【问题标题】:EXC_BAD_ACCESS for NSXMLParser codeNSXMLParser 代码的 EXC_BAD_ACCESS
【发布时间】:2014-06-16 10:03:00
【问题描述】:

我已经编写了以下代码来解析RSS feeds.,但是当它尝试将元素与@"title" 进行比较时,我在foundCharacter 方法中不断得到EXC_BAD_ACCESS。知道我哪里出错了吗?

NSMutableDictionary * item;
NSMutableString * title;
NSMutableString * link;
NSString *element;
NSMutableArray *feeds; 

-(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];
    }
}

-(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]];
        NSLog(@"feeds :: %@",feeds);
    }


}

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    if ([element isEqualToString:@"title"]) {
        [title appendString:string];`enter code here`
    }else if ([element isEqualToString:@"link"]){
        [link appendString:string];
    }
}

【问题讨论】:

  • 对不起,它仍然在同一行代码崩溃
  • 此时您需要调试并检查元素的值。它可能为零。
  • 方法中没有使用的'element'变量 -(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string,应该是string。
  • 我没有使用 ARC.. 当我到达代码行时它崩溃了
  • @user2071152 我已将元素变量声明为 NSString

标签: ios objective-c xml-parsing exc-bad-access nsxmlparser


【解决方案1】:

我认为错误在这一行:

element = elementName;

你必须初始化变量元素。所以写这个:

element = [[NSString alloc] initWithString:elementName];

那么它应该可以工作了。

【讨论】:

  • 非常感谢,这确实奏效了。我接受你的回答。
  • 不客气。请用答案左侧的绿色复选标记接受它。并且永远记得初始化你的实例:)
  • 本杰明,我给了你一些赞成票,而不是接受的答案。但你也应该建议element = [elementName copy]
  • 谢谢史蒂夫。是的,你的解决方案可能比我的更好:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
  • 2014-03-28
相关资源
最近更新 更多