2013-06-17 7 views
1

J'ai un objet NSString et j'essaye de lire son contenu. Je sais que le format de son contenu est le suivant:La meilleure façon de lire des données formatées de NSString?

"v %f %f %f\n" 

Une façon de le faire est d'obtenir la chaîne c-style de l'objet NSString puis utilisez la méthode:

sscanf(cstring,"v %f %f %f\n"); 

Y at-il d'autres façons? Ma solution est trop "C-style".

Edit:

Le format attendu du NSString est

"v %f %f %f\n" 

Mais il est peut-être dans un autre format si les données ne sont pas correctes.

+1

NSScanner est probablement votre meilleure option ici. Cela peut prendre un peu le côté verbeux, mais il vous donnera probablement le plus de robustesse. –

+0

Qu'est-ce qui ne va pas avec le bon vieux style C? En passant, je seconde la déclaration de Richards sur NSScanner. – John

+0

Veuillez modifier votre question pour indiquer que vous voulez le "meilleur" moyen de lire les données d'une chaîne et aussi supprimer votre format "échantillon" puisque vous dites qu'il pourrait ne pas être formaté de cette façon. – kailoon

Répondre

-1

Essayez d'utiliser des méthodes NSString comme ceci:

NSArray *vals = [string componentsSeparatedByString:@" "]; 
float f1 = [vals[1] floatValue]; 
float f2 = [vals[2] floatValue]; 
float f3 = [vals[3] floatValue]; 
+2

Je ne ferais pas ça. Il se bloque de façon très désagréable si les données apparaissent dans un autre format (séparé par des tabulations au lieu des espaces), par opposition aux méthodes 'sscanf' ou' NSScanner'. –

+0

Cela peut être une solution possible, merci @kailoon. Mais je suis d'accord avec Richard J. Ross III que si les données n'apparaissent pas dans le format comme je m'y attendais, le programme peut tomber en panne. –

+0

Votre question était: Y at-il d'autres moyens d'obtenir les données de la chaîne que vous avez fournie, et non la meilleure façon d'obtenir des données à partir de n'importe quel type de chaîne formatée, et oui, je ne sais pas la question. – kailoon

Questions connexes