2011-01-14 8 views
1

xlm 판독기에 문제가 있습니다. 제가 배열로 재고하고 싶지만 일부 코드가 잘못되어있는 통화 라이더가 있습니다. http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml목표 c xml을 읽고 배열에 저장하십시오.

헤더 파일

@class Convertisseur; 


@interface Convertisseur1ViewController : 
    UIViewController <UITextFieldDelegate>{ 

    IBOutlet UILabel *usd; 
    IBOutlet UILabel *euro; 
Convertisseur *convertisseur; 


    // parser XML 
    NSXMLParser *rssParser; 
    // elenco degli elementi letti dal feed 
    NSMutableArray *elencoFeed; 

    //variabile temporanea pe ogni elemento 
    NSMutableDictionary *item; 

    // valori dei campi letti dal feed 
    NSString *currentElement; 
    NSMutableString *currentCube; 

    NSArray *currency; 
} 


//Dichiarazion del parser 
- (void)parseXMLFileAtURL:(NSString *)URL; 
@end 

구현 파일

#import "Convertisseur1ViewController.h" 
#import "Convertisseur.h" 

@implementation Convertisseur1ViewController 




- (void)parseXMLFileAtURL:(NSString *)URL { 
    // inizializziamo la lista degli elementi 
elencoFeed = [[NSMutableArray alloc] init]; 

    // dobbiamo convertire la stringa "URL" in un elemento "NSURL" 
NSURL *xmlURL = [NSURL URLWithString:URL]; 

    // inizializziamo il nostro parser XML 
rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL]; 

[rssParser setDelegate:self]; 

    // settiamo alcune proprietà 
[rssParser setShouldProcessNamespaces:NO]; 
[rssParser setShouldReportNamespacePrefixes:NO]; 
[rssParser setShouldResolveExternalEntities:NO]; 

    // avviamo il parsing del feed RSS 
[rssParser parse]; 
} 




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

currentElement = [elementName copy]; 
if ([elementName isEqualToString:@"item"]) { 
    // inizializza tutti gli elementi 
    item = [[NSMutableDictionary alloc] init]; 
    currentCube = [[NSMutableString alloc] init]; 
} 
} 

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

if ([elementName isEqualToString:@"Cube"]) { 
    /* salva tutte le proprietà del feed letto nell'elemento "item", per 
    poi inserirlo nell'array "elencoFeed" */ 
    [item setObject:currentCube forKey:@"Cube"]; 

    [elencoFeed addObject:[item copy]]; 
} 
} 




- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{; 
    // salva i caratteri per l'elemento corrente 
if ([currentElement isEqualToString:@"Cube"]){ 
    [currentCube appendString:string]; 
} 
} 






- (void) parserDidEndDocument:(NSXMLParser *)parser { 


for(int i=1;i<[elencoFeed count];i++) { 

    [currency setvalue:[[elencoFeed Objectatindex:i] valueforkey:@"rate"] forkey:[[elencoFeed Objectatindex:i] valueforkey:@"currency"]]; 
    //currency[i]= [elencoFeed Objectatindex:i] valueforkey:@"rate"] forkey:[[elencoFeed Objectatindex:i] valueforkey:@"currency"]; 

} 

} 



- (void)viewDidLoad { 
[super viewDidLoad]; 
convertisseur = [[Convertisseur alloc] init]; 


    self.title = @"Convertisseur"; 

    NSString *path = @"http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"; 
    [self parseXMLFileAtURL:path]; 
    euro.text = currency.text; 
} 



- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
self.labelEuro = nil; 
self.labelDollar = nil; 
self.convertisseur = nil; 

} 



- (void)dealloc { 
    [super dealloc]; 
} 
+0

서식있는 코드를 사용하면 질문을 쉽게 읽을 수 있습니다 – Abizern

+0

무슨 일입니까? 오류 메시지를 게시 할 수 있습니까? –

+1

오류가 발생했습니다 : euro.text = currency.text; – Michele

답변

1

당신은 TouchXML 사용을 고려할 수 있습니다 여기에

내가 읽고 싶은 피드입니다. 나는

당신이 필요로하는 정보를 추출하기 위해 걸어야 것,

그것은 당신의 XML 문서 구조의 메모리 표현하면을 줄 것이다 (http://foobarpig.com/iphone/touchxml-installation-guide.html 참조) NSXMLParser보다 사용하기 위해 그것을 더 쉽게 발견 .

관련 문제