J'ai un numéro dans un NSString @"15"
. Je veux convertir en NSUInteger, mais je ne sais pas comment faire ...NSString à NSUInteger
12
A
Répondre
25
NSString *str = @"15";
// Extract an integer number, returns 0 if there's no valid number at the start of the string.
NSInteger i = [str integerValue];
Si vous voulez vraiment un NSUInteger, juste jeter mais vous voudrez peut-être tester la valeur à l'avance.
0
vous pouvez essayer avec [string longLongValue]
ou [string intValue]
..
17
La réponse actuellement choisie est incorrecte pour NSUInteger. Comme Corey Floyd fait remarquer un commentaire sur la réponse sélectionnée cela ne fonctionnera pas si la valeur est plus grande que INT_MAX. Une meilleure façon de le faire est d'utiliser NSNumber puis en utilisant l'une des méthodes sur NSNumber pour récupérer le type qui vous intéresse, .: par exemple
NSString *str = @"15"; // Or whatever value you want
NSNumber *number = [NSNumber numberWithLongLong: str.longLongValue];
NSUInteger value = number.unsignedIntegerValue;
1
Toutes ces réponses sont fausses sur un système 64 bits.
NSScanner *scanner = [NSScanner scannerWithString:@"15"];
unsigned long long ull;
if (![scanner scanUnsignedLongLong:&ull]) {
ull = 0; // Or handle failure some other way
}
return (NSUInteger)ull; // This happens to work because NSUInteger is the same as unsigned long long at the moment.
Test avec 9223372036854775808, qui ne rentre pas dans un signé long long
.
Pour demander la prise en charge de la lecture de valeurs non signées à partir de NSString, rendez-vous sur http://bugreport.apple.com et déposez une dupe de radar: // 2264733 contre le composant 'Foundation | X'. –