Ich habe eine Nummer in einem NSString @"15"
. Ich möchte dies NSUInteger konvertieren, aber ich weiß nicht, wie das zu tun ...NSString zu NSUInteger
12
A
Antwort
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];
Wenn Sie wirklich ein NSUInteger wollen, nur werfen es, aber Sie möchten vielleicht den Wert vorab testen.
0
Sie mit [string longLongValue]
oder [string intValue]
versuchen ..
17
Die aktuell gewählte Antwort ist falsch für NSUInteger. Da Corey Floyd einen Kommentar zu der ausgewählten Antwort ausgibt, wird dies nicht funktionieren, wenn der Wert größer als INT_MAX ist. Ein besserer Weg, dies zu tun, ist NSNumber zu verwenden und dann eine der Methoden auf NSNumber mit der Art abzurufen, die Sie interessiert, z.B .:
NSString *str = @"15"; // Or whatever value you want
NSNumber *number = [NSNumber numberWithLongLong: str.longLongValue];
NSUInteger value = number.unsignedIntegerValue;
1
Alle diese Antworten sind falsch auf einem 64-Bit-System.
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 mit 9223372036854775808, die ein signiertes long long
nicht passen.
Um Unterstützung für das Lesen unsignierter Werte von NSString anzufordern, besuchen Sie bitte http://bugreport.apple.com und reichen Sie einen Dupe von Radar: // 2264733 gegen die Komponente 'Foundation | X'. –