Tôi có một số trong số NSString @"15"
. Tôi muốn chuyển đổi này để NSUInteger, nhưng tôi không biết làm thế nào để làm điều đó ...NSString tới NSUInteger
12
A
Trả lời
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];
Nếu bạn thực sự muốn có một NSUInteger, chỉ cần đúc nó, nhưng bạn có thể muốn kiểm tra giá trị trước.
0
bạn có thể thử với [string longLongValue]
hoặc [string intValue]
..
17
Câu trả lời hiện được chọn không chính xác cho NSUInteger. Khi Corey Floyd chỉ ra một nhận xét về câu trả lời đã chọn, điều này sẽ không hoạt động nếu giá trị lớn hơn INT_MAX. Một cách tốt hơn để làm điều này là sử dụng NSNumber và sau đó sử dụng một trong những phương pháp trên NSNumber để lấy loại mà bạn đang quan tâm, ví dụ .:
NSString *str = @"15"; // Or whatever value you want
NSNumber *number = [NSNumber numberWithLongLong: str.longLongValue];
NSUInteger value = number.unsignedIntegerValue;
1
Tất cả những câu trả lời là sai trên một hệ thống 64-bit.
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.
Kiểm tra với 9223372036854775808, không phù hợp với chữ ký long long
.
Để yêu cầu hỗ trợ đọc các giá trị chưa ký từ NSString, vui lòng truy cập http://bugreport.apple.com và gửi một bản dupe của radar: // 2264733 dựa vào thành phần 'Foundation | X'. –