2013-04-17 66 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」。