У меня есть номер в NSString @"15"
. Я хочу преобразовать это в NSUInteger, но я не знаю, как это сделать...
NSString для NSUInteger
Ответ 1
NSString *str = @"15";
// Extract an integer number, returns 0 if there no valid number at the start of the string.
NSInteger i = [str integerValue];
Если вы действительно хотите NSUInteger, просто бросьте его, но вы можете проверить его заранее.
Ответ 2
Текущий выбранный ответ неверен для NSUInteger. Поскольку Кори Флойд указывает комментарий к выбранному ответу, это не будет работать, если значение больше INT_MAX. Лучший способ сделать это - использовать NSNumber, а затем использовать один из методов в NSNumber для получения интересующего вас типа, например:
NSString *str = @"15"; // Or whatever value you want
NSNumber *number = [NSNumber numberWithLongLong: str.longLongValue];
NSUInteger value = number.unsignedIntegerValue;
Ответ 3
Все эти ответы неверны в 64-битной системе.
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.
Протестируйте с помощью 9223372036854775808, который не будет соответствовать подписанному long long
.
Ответ 4
вы можете попробовать с помощью [string longLongValue]
или [string intValue]
..