NSString в NSUInteger - PullRequest
       30

NSString в NSUInteger

13 голосов
/ 01 мая 2010

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

Ответы [ 4 ]

26 голосов
/ 01 мая 2010
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];

Если вы действительно хотите NSUInteger, просто приведите его, но вы можете заранее проверить значение.

18 голосов
/ 02 апреля 2014

Текущий выбранный ответ неверен для NSUInteger. Как Кори Флойд указывает на комментарий к выбранному ответу, это не сработает, если значение больше INT_MAX. Лучший способ сделать это - использовать NSNumber, а затем использовать один из методов NSNumber для получения интересующего вас типа, например ::10000

NSString *str = @"15"; // Or whatever value you want
NSNumber *number = [NSNumber numberWithLongLong: str.longLongValue];
NSUInteger value = number.unsignedIntegerValue;
3 голосов
/ 06 января 2016

Все эти ответы неверны в 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.

0 голосов
/ 01 мая 2010

вы можете попробовать с [string longLongValue] или [string intValue] ..

...