NSNumber和NSTimeInterval

时间:2011-07-25 13:14:46

标签: iphone ios objective-c nsdate

我试图以毫秒为单位获得系统时间。  为此我宣布:

 NSNumber *createdTimeInMilliSec; //in class declaration

在我的一个实例函数中,我在做:

 self.createdTimeInMilliSec= ([NSDate timeIntervalSinceReferenceDate]*1000); //ERROR: incompatible type for argument 1 of 'setCreatedTimeInMilliSec:'

timeIntervalSinceReferenceDate会在NSTimeInterval中返回,那么如何将其转换为NSNumber?或者我做错了什么?

4 个答案:

答案 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];