无法将TimeInterval与Integer进行比较

时间:2010-09-23 11:53:25

标签: iphone nstimeinterval

我正在尝试将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;
        }
    }

2 个答案:

答案 0 :(得分:6)

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

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

或只是

int intSecondsElapsed = (int)[startTime timeIntervalSinceNow];

修改:如果您在不同的功能中初始化并使用startTime变量,则需要保留它。 [NSDate date]返回自动释放的对象,使其在创建范围之外变为无效。为了方便起见,使用startTime的retain属性声明属性并使用

创建它
self.startTime = [NSDate date];

不要忘记在你的类dealloc方法中释放它。

答案 1 :(得分:2)

弗拉基米尔说的是完全正确的,我只是想补充一点,因为你试图将消息intValue发送给{{1},因此你看到错误“无法转换为指针类型”的原因只有当你发送消息的是指向将响应它的对象的指针时,你才能这样做。编译器试图将timeInterval视为指针,但失败了。