2014-10-11 1 views
2

Я пытаюсь придать NSNumber длинному длинному int, но я получаю неожиданные значения. Что я делаю неправильно?Как правильно ввести NSNumber в long long int?

NSNumber *number = [[NSNumber alloc] initWithInt:60]; 
if ([self isTimeOver:number]) { 
    [self sendPushTest]; 
} 

-(BOOL)isTimeOver: (NSNumber*) interval { 
    long long int theInterval = (long long int)interval; 
    NSLog(@"THE INTERVAL %lld",theInterval); // I get -5764607523034233918 here. 
} 

ответ

12

-longLongValue Используйте так long long int и long long одинаковы.

long long int theInterval = [interval longLongValue]; 

Вы никогда не должны пытаться просто литье NSNumber с до примитивных типов (делать это приведет к количеству мусора вы получили). Взгляните на documentation для получения дополнительной информации.

+2

Yup. Чтобы развернуть бит: 'NSNumber' не является примитивным значением типа' int', а объектом, который содержит значение. Таким образом, вы не можете использовать кастинг для получения значения, вместо этого вы вызываете методы на объекте, чтобы получить значение. – rickster