Mam ciąg numeryczny i zaobserwowałem rozbieżność, gdzie jego intValue
znacznie różni się od wartości ciągu. Poniższy kod:- [NSString intValue] zwracanie zupełnie innej wartości niż ciąg znaków mówi
NSString *string = [result objectForKey:@"id"];
NSLog(@"ID %@",string);
NSLog(@"ID as integer %i",[string intValue]);
daje wynik:
"ID 100004378121454"
"ID as integer 2147483647"
Jedyne logiczne przypuszczenie mogę sprawić, że łańcuch jest zbyt długi, aby być konwertowane do int
... W każdym razie starałem longLongValue
i podobne - do różnych wyników, ale nie do tych, które powinny być.
Masz rację, że osiągasz granice 32-bitowej int, ale wartość LonglongValue powinna działać. Jaki jest zatem wynik? –
spróbuj użyć unsigned int (u_int32 maksymalna wartość 9 223 372,036,854,775,808) –
Czy wiesz, że "ciąg" jest w rzeczywistości NSString i nie NSNumber? Możesz zapytać o klasę. –