如何正确地将NSNumber转换为long long int?

4 int nsnumber ios

即时通讯试图将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.
}
Run Code Online (Sandbox Code Playgroud)

reb*_*o95 14

使用-longLongValuelong long int并且long long是相同的.

long long int theInterval = [interval longLongValue];
Run Code Online (Sandbox Code Playgroud)

你永远不应该只尝试将NSNumbers转换为原始类型(这样做会导致你得到的垃圾数).查看文档以获取更多信息.

  • 对.扩展一点:`NSNumber`不是像`int`这样的原始值,而是包含值的对象.因此,您不能使用强制转换来获取值 - 而是在对象上调用方法来获取值. (2认同)