2010-10-28 3 views
0

J'ai eu quelques problèmes pour que NSNumberFormatter fonctionne correctement.Qu'est-ce que __AVAILABILITY_INTERNAL__IPHONE_2, NS_AVAILABLE? Essayer d'utiliser NSNumberFormatter, renvoie (null)

Je compile dans iOS4 avec le cadre Three20.

Tous les sélecteurs de NSNumberFormatter exigent quelque chose appelé NS_AVAILABLE comme second paramètre sur le sélecteur:

[numberFormatter setCurrencyGroupingSeparator:(NSString *)string __AVAILABILITY_INTERNAL__IPHONE_2:(int)_0]; 

Je ne sais pas ce que je suis censé faire avec le second paramètre. J'ai essayé:

[numberFormatter setCurrencyGroupingSeparator:@"," __AVAILABILITY_INTERNAL__IPHONE_2:2]; // Warning: NSNumberFormatter' may not respond to '-setCurrencyGroupingSeparator:__AVAILABILITY_INTERNAL__IPHONE_2: 
[numberFormatter setCurrencyGroupingSeparator:@"," __AVAILABILITY_INTERNAL__IPHONE_2:2_0]; //Error: invalid suffix "_0" on integer constant 

et plusieurs autres itérations de cela. Si je ne spécifie pas __AVAILABLE_INTERNAL__IPHONE_2, il ne lance pas d'avertissement et compile bien, mais le texte du sélecteur est noir, pas violet foncé dans Xcode comme s'il n'était pas reconnu.

Voici le plein extrait de code:

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[numberFormatter setCurrencyGroupingSeparator:@","]; 
[numberFormatter setUsesGroupingSeparator:YES]; 
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
numberString = [NSString stringWithFormat: @"$%@",[numberFormatter stringFromNumber:myNsNumber]]; // myNsNumber is an NSNumber with a value of 10000000 
NSLog(@"numberString: %@",numberString); // numberString: (null) | instead of numberString: $10,000,000 

J'ai googlé _AVAILABILITY_INTERNAL__IPHONE_2 et NS_AVAILABLE sans chance.

La recherche sur developer.apple.com ne me donne que les différences API iOS 4.0.

Est-ce un problème avec Three20? Est-ce que quelqu'un sait ce qui se passe ici ou ce que NS_AVAILABLE est tout?

Répondre

1

Oubliez à peu près tout ce que vous avez dans ce post jusqu'à présent. Le contenu de disponibilité vous permet de savoir dans quel SDK les méthodes sont incluses.

Cela fonctionne code NSNumberFormatter.

NSNumber *number = [UINumber numberWithInt:42]; 
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init]; 
[nf setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
[nf setNumberStyle:NSNumberFormatterDecimalStyle]; 
NSString *string = [nf stringFromNumber:number]; 
[nf release]; 

Si vous avez une chaîne vide, alors il est soit parce que votre NSNumber est nulle ou NaN, ou le format est foiré.

+0

OK, cela a fonctionné. Pour une raison quelconque, j'ai dû déclarer à nouveau mon numéro NSNumber -> NSNumber * = [NSNumber numberWithInt: [myNsNumber intValue]]; Merci. –

Questions connexes