2009-07-28 9 views

Antwort

1

Hier ist ein blog post darüber, jedoch zu rekapitulieren, wenn Sie TBXML verwenden, können Sie es mit den folgenden Methoden tun.

Sie wie folgt vor:

  1. annehmen, dass Sie ein veränderliches Wörterbuch Objekt als Klasseneigenschaft gemacht haben exchangeRates genannt
  2. Set von EUR als Basisrate (Wert von 1,0)
  3. aufrufen Wechselkurse XML der Europäischen Zentralbank und analysiert es.
  4. Nachdem Sie die loadExchangeRates genannt haben() -Methode können Sie einen bestimmten Wechselkurs erhalten, indem Sie:

    NSDecimalNumber *rate = [NSDecimalNumber decimalNumberWithString:[self.exchangeRates objectForKey:@"USD"]]; 
    

Hier sind die Methoden:

- (void)loadExchangeRates { 

// initialize rate array 
exchangeRates = [[NSMutableDictionary alloc] init]; 

// Load and parse the rates.xml file 
TBXML * tbxml = [[TBXML tbxmlWithURL:[NSURL URLWithString:@"http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"]] retain]; 

// If TBXML found a root node, process element and iterate all children 
if (tbxml.rootXMLElement) 
    [self traverseElement:tbxml.rootXMLElement]; 

// add EUR to rate table 
[exchangeRates setObject:@"1.0" forKey:@"EUR"]; 

// release resources 
[tbxml release]; } 


- (void) traverseElement:(TBXMLElement *)element { 

    do { 
     // Display the name of the element 
     //NSLog(@"%@",[TBXML elementName:element]); 

     // Obtain first attribute from element 
     TBXMLAttribute * attribute = element->firstAttribute; 

     // if attribute is valid 
     NSString *currencyName; 
     while (attribute) { 
      /* Display name and value of attribute to the log window 
      NSLog(@"%@->%@ = %@", 
        [TBXML elementName:element], 
        [TBXML attributeName:attribute], 
        [TBXML attributeValue:attribute]); 
      */ 
      // store currency 
      if ([[TBXML attributeName:attribute] isEqualToString: @"currency"]) { 
       currencyName = [TBXML attributeValue:attribute]; 
      }else if ([[TBXML attributeName:attribute] isEqualToString: @"rate"]) { 
       // store currency and rate in dictionary 
       [exchangeRates setObject:[TBXML attributeValue:attribute] forKey:currencyName]; 
      } 
      // Obtain the next attribute 
      attribute = attribute->next; 
     } 

     // if the element has child elements, process them 
     if (element->firstChild) 
      [self traverseElement:element->firstChild]; 

     // Obtain next sibling element 
    } while ((element = element->nextSibling)); 
} 
+0

Danke, das hat sehr geholfen! – Anonymous

+0

Siehe auch OpenExchangeRates.org hier: [openexchangers.org] (http://openexcharates.org/) – Leafy

0

Meine erste Anlaufstelle wäre es, einen Webservice zu finden, der Währungsraten mit einer öffentlichen API bereitstellt. Dann müssten Sie einige Funktionen in Ihre App integrieren, die mit der API kommuniziert, um die benötigten Informationen zu erhalten.

Möglicherweise gibt es einige Dienste, die die Wechselkurse in einem RSS-Feed oder einem ähnlichen Feed anbieten. Sie können dann das von diesem Feed heruntergeladene XML in einige Objekte analysieren, die Sie in Ihrer App verwenden können.

+0

Okay, ich habe einen mit RSS gefunden. Sprich es heißt: Die Währung für heute ist bla bla. Wie bekomme ich nur die Währung, nicht die "Währung für heute"? – Anonymous

1

Ich weiß, diese Frage wurde bereits beantwortet, aber für alle anderen, die nach einer Lösung für das gleiche Problem suchen, gibt es auch eine großartige JSON-Lösung, die unter openexchangerates.org ebenfalls verfügbar ist.