Извлекать serverOutputValue как NSInteger

#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