2010-09-23 20 views
2

我想比较timeInterval整数值,所以我尝试将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; 
     } 
    } 
+0

您的代码中也有语法错误。 'if([counterInt == intSecondElapsed])'不应该在它周围有方括号。此外,你可以简化这样的语句:'if(counterInt!= intSecondsElapsed)' – Jasarien 2010-09-23 12:15:30

+0

谢谢,我意识到编译时。我编辑了我的问题以反映您的更改。 – Stephen 2010-09-23 14:03:58

回答

6

NSTimeInterval被定义为双所以如果你想将其转换为int你可以简单的类型转换

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

或者干脆

int intSecondsElapsed = (int)[startTime timeIntervalSinceNow]; 

编辑:如果您初始化并使用您的startTime变量,然后您需要保留它。 [NSDate date]返回自动释放的对象,使其在创建范围外变得无效。为了让事情变得更容易与声明保留属性的属性startTime和使用

self.startTime = [NSDate date]; 

创建它,不要忘了释放它在你的类dealloc方法。

+0

谢谢,这工作。 – Stephen 2010-09-23 12:50:42

+0

弗拉基米尔,你的代码更改编译干净,但我得到一个'EXE_BAD_ACCESS“,而在线执行'int intSecondsElapsed =(int)[startTime timeIntervalSinceNow];' – Stephen 2010-09-23 14:08:20

+0

是的,解决了它,谢谢 – Stephen 2010-09-23 14:34:12

2

弗拉基米尔说什么是完全正确的,我只是想补充说,你看到错误“无法转换为指针类型”的原因是因为你试图发送消息intValuetimeInterval,你只能做如果你发送消息的是一个指向将响应它的对象的指针。编译器试图将timeInterval作为指针,但失败。