我正在尝试获取两个NSDate之间的时间间隔,即previousActivity.stopTime
和previousActivity.startTime
。我在这段代码中收到错误:
NSTimeInterval *previousActivityDuration = [previousActivity.stopTime timeIntervalSinceDate:previousActivity.startTime];
以下是错误消息:
"Initializing 'NSTimeInterval *' (aka 'double *') with an expression of incompatible type 'NSTimeInterval' (aka 'double')"
我不明白;如果NSTimeInterval又名'double',那么初始化表达式是如何不兼容的,我该如何修复呢?
非常感谢!
修改
Per @ Rmaddy的评论,我删除了星号。然后我立即在以下行中收到此错误:
Assigning to 'NSNumber *' from incompatible type 'NSTimeInterval' (aka 'double')
这是违规行:
previousActivity.duration = previousActivityDuration;
答案 0 :(得分:11)
您正在尝试创建一个NSTimeInterval
指针变量,但您真正想要的只是一个NSTimeInterval
变量。所以删除这样的星号:
NSTimeInterval previousActivityDuration = [previousActivity.stopTime timeIntervalSinceDate:previousActivity.startTime];
您的代码抱怨,因为类型不同。通常我们只使用Objective-C对象的指针,并且只在必要时我们通常使用指针来表示原始类型,例如double
s等。
答案 1 :(得分:4)
如果您仔细阅读错误,则可以了解需要更改
NSTimeInterval *previousActivityDuration
到
NSTimeInterval previousActivityDuration
(删除星号)
如果你cmd +点击NSTimeInterval
,你会看到这一行:
typedef double NSTimeInterval;
意味着它只是一个原始的,而不是一个阶级。