Подтвердить что ты не робот

NSString для NSUInteger

У меня есть номер в NSString @"15". Я хочу преобразовать это в NSUInteger, но я не знаю, как это сделать...

4b9b3361

Ответ 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]..