2013-04-17 67 views
0

我的代码存在问题,但无法理解问题所在。从网站解析Xcode XML文件

我解析下面的XML文件

<item> 
      <title>Title</title> 
      <link>http://news.israelinfo.ru/economy/45276</link> 
      <category>economy</category> 
      <pubDate>Tue, 16 Apr 2013 00:00:00 +0300</pubDate> 
      <description><![CDATA[ 
      <img src="http://news.israelinfo.ru/images/45276.jpg" 
      width="180" height="124" align="left">describe article]]></description> 
    </item> 

我得到在我的新闻阵列计数(它总是20),但是当我试图把一个描述我的自定义单元格我的应用程序崩溃: (

以下是错误:

2013-04-17 23:52:05.258 IsraelNews[20379:c07] -[lastNews isEqualToString:]: unrecognized selector sent to instance 0x715b460 2013-04-17 23:52:05.259 IsraelNews[20379:c07] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[lastNews isEqualToString:]: unrecognized selector sent to instance 0x715b460'

cell.titleLabel.text = [news objectAtIndex:5]; 

如果我把静态文本@"Test",那么一切都很好。

我做错了什么?如果您需要其他信息,请告诉我。

感谢

我的XML解析器是在这里:

-(id)init { 

    if (self=[super init]) { 

     news = [[NSMutableArray alloc]init]; 
     dateFormatter = [[NSDateFormatter alloc]init]; 
     [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzzz"]; 

    } 
    return self; 
} 

-(NSArray*)fetchNewsWithError:(NSError*)outError { 
    BOOL success; 
    NSURL *xmlUrl = [NSURL URLWithString:@"http://israelinfo.ru/xml/news.xml"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:xmlUrl cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30]; 
    NSURLResponse *response = nil; 

    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&outError]; 

    if (!data) return nil; 

    [news removeAllObjects]; 
    NSXMLParser *parser; 
    parser = [[NSXMLParser alloc]initWithData:data]; 
    [parser setDelegate:self]; 
    success = [parser parse]; 
    if (!success) { 

     NSLog(@"error!"); 
     return nil; 

    } 

    NSArray *output = [news copy]; 
    return output; 

} 


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

    if ([elementName isEqual:@"item"]) { 
     currentFields = [[NSMutableDictionary alloc]init]; 
    } else if ([elementName isEqual:@"title"]) { 

     [currentFields setObject:@"title" forKey:@"title"]; 

    } 
} 


-(void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 


    if ([elementName isEqual:@"item"]) { 

     lastNews *currentTitle = [[lastNews alloc]init]; 
     [currentTitle setTitle:[currentFields objectForKey:@"title"]]; 
     [currentTitle setLink:[currentFields objectForKey:@"link"]]; 
     [currentTitle setCategory:[currentFields objectForKey:@"category"]]; 
     [currentTitle setDescription:[currentFields objectForKey:@"description"]]; 

     NSString *beginString = [currentFields objectForKey:@"pubDate"]; 
     NSDate *beginDate = [dateFormatter dateFromString:beginString]; 
     [currentTitle setPubDate:beginDate]; 
     [news addObject:currentTitle]; 
     currentTitle = nil; 
     currentFields = nil; 

    } else if (currentFields && currentString) { 

     NSString *trimmed; 
     trimmed = [currentString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
     [currentFields setObject:trimmed forKey:elementName]; 

    } 
    currentString = nil; 
} 


-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 

    if (!currentString) { 

     currentString = [[NSMutableString alloc]init]; 
    } 
     [currentString appendString:string]; 

} 

回答

0

我想我已经找到了我的解决方案

lastNews *item = [news objectAtIndex:indexPath.row]; 
    cell.titleLabel.text = item.title; 
0

这个对象lastNews是零,这就是为什么抛出异常 “NSInvalidArgumentException”。