我试图以毫秒为单位获得系统时间。 为此我宣布:
NSNumber *createdTimeInMilliSec; //in class declaration
在我的一个实例函数中,我在做:
self.createdTimeInMilliSec= ([NSDate timeIntervalSinceReferenceDate]*1000); //ERROR: incompatible type for argument 1 of 'setCreatedTimeInMilliSec:'
timeIntervalSinceReferenceDate
会在NSTimeInterval
中返回,那么如何将其转换为NSNumber
?或者我做错了什么?
答案 0 :(得分:24)
NSTimeInterval
的类型定义如下:typedef double NSTimeInterval;
。
要创建NSNumber
,请使用:
NSNumber *n = [NSNumber numberWithDouble:yourTimeIntervalValue];
答案 1 :(得分:2)
我不确定其他答案是否清楚 - 但NSTimeInterval实际上只是一个typedef'ed double。您可以通过[NSNumber numberWithDouble:timeInterval]
或更简洁@(timeInterval)
来获取NSNumber。
答案 2 :(得分:1)
NSTimeInterval是double的typedef。因此,请使用NSNumber
的便捷构造函数numberWithDouble:
,如下所示:
self.createdTimeInMilliSec= [NSNumber numberWithDouble:([NSDate timeIntervalSinceReferenceDate]*1000)];
答案 3 :(得分:1)
由于NSTimeInterval是双倍的,你可以做
NSNumber *myNumber = [NSNumber numberWithDouble: myTimeInterval];