2

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

2 回答 2

6

NSTimeInterval is defined as double so if you want to convert it to int you can make simple type cast

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

or simply

int intSecondsElapsed = (int)[startTime timeIntervalSinceNow];

Edit: If you initialize and use your startTime variable in different functions you need to retain it then. [NSDate date] returns autoreleased object so it becomes invalid outside the scope it was created. To make things easier declare a property with retain attribute for startTime and create it using

self.startTime = [NSDate date];

And don't forget to release it in your class dealloc method.

于 2010-09-23T11:57:45.603 回答
2

Vladimir 说的完全正确,我只是想补充一点,您看到错误“无法转换为指针类型”的原因是因为您尝试将消息发送intValuetimeInterval,只有在您发送的内容时才能执行此操作消息 to 是指向将响应它的对象的指针。编译器试图将timeInterval其视为指针,但失败了。

于 2010-09-23T12:21:29.033 回答