我正在尝试将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 :(得分: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
视为指针,但失败了。