2010-01-19 6 views
0

Je lis des données XML et crée des objets, mais certaines de mes variables d'objet doivent être flottantes. Et avec le - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string il devient évidemment une chaîne et mes variables float seront définies à 0.000000. Dans le - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName, j'ai essayé quelque chose comme ceci en définissant la valeur à l'objet, mais il est apparemment incompatible types comme setValue veut une clé (id) (et je viens de réaliser que temp était de 0.000000 de toute façon, donc le floatValue ne travaille pas non plus).Données de flottement de l'analyse XML pour l'iPhone

if([elementName isEqualToString:@"longitude"]) 
{ 
    float temp = [currentElementValue floatValue]; 
    [myObj setValue:temp forKey:elementName]; 
} 

Est-ce que quelqu'un a une idée comment le résoudre ou dois-je juste le mettre à NSStrings dans mon objet et le convertir en flotte après?

Répondre

1

Il suffit de l'enregistrer en tant que chaîne lors de l'analyse. Ensuite, lorsque vous en avez besoin pour les calculs, convertissez-le en un flottant avec [NSString floatValue] comme vous le faites ci-dessus.

Cependant, je pense que float ne peut pas contenir la valeur NSString renvoie donc essayez-le avec votre temp en tant que CGFloat à la place.

Il n'y a aucun moyen pour le XML de contenir autre chose que des chaînes de sorte que cette approche est OK.