我试图将timeInterval与一个整数值进行比较,所以我尝试将timeInterval转换为一个整数并进行比较。但是我收到一个错误“无法转换为指针类型”:

NSTimeInterval timeInterval = [startTime timeIntervalSinceNow];
int intSecondsElapsed = [timeInterval intValue]; // Error here !!!!

if ([counterInt != intSecondsElapsed])
{
    // Do something here...
}


如何去做呢?

编辑:包括有关执行错误的更多详细信息。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    //[formatter setDateFormat:@"HH:mm:ss"];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    startTime = [NSDate date];
    [formatter release];


if ([deviceType isEqualToString:@"iPhone 4"]||[deviceType isEqualToString:@"iPhone Simulator"])
    {
        int intSecondsElapsed = (int)[startTime timeIntervalSinceNow];
        if (counterInt != intSecondsElapsed)
        {
            counterInt = intSecondsElapsed;
        }
    }

最佳答案

NSTimeInterval被定义为double,因此,如果要将其转换为int,则可以进行简单的类型转换

NSTimeInterval timeInterval = [startTime timeIntervalSinceNow];
int intSecondsElapsed = (int)timeInterval;


或简单地

int intSecondsElapsed = (int)[startTime timeIntervalSinceNow];


编辑:如果您在不同的函数中初始化并使用startTime变量,则需要保留它。 [NSDate date]返回自动释放的对象,因此它在创建范围之外变得无效。为了使事情变得更容易,为startTime声明一个带有keep属性的属性,并使用创建它

self.startTime = [NSDate date];


并且不要忘记在您的类dealloc方法中释放它。

关于iphone - 无法比较TimeInterval和Integer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3778053/

10-10 08:18