#objective-c #nsinteger
#objective-c #nsinteger
Вопрос:
Привет всем, я пытаюсь вызвать php-скрипт через мое приложение для iphone, который возвращает мне целочисленное значение в качестве serverOutput
NSData *dataURL = [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];
NSInteger * userid = [serverOutput integerValue];
NSLog(@" %d" , userid);
Но если я напечатаю свою строку serverOutput, это будет 2381164503, но мой NSLog (@»% d», идентификатор пользователя) выведет меня 2147483647. Я не знаю, по какой-то причине он анализирует другое значение: (
Ответ №1:
Во-первых, NSInteger — это примитивный тип, поэтому вам не следует объявлять userid в качестве указателя (ставя звездочку впереди). Во-вторых, значение 2381164503 слишком велико для NSInteger (максимальное значение равно 2147483647).
Попробуйте использовать long long
вместо:
long long userid = [serverOutput longLongValue];
NSLog(@" %lld" , userid); //use %lld instead of %d