2011-07-25 47 views
6

我想以毫秒为单位获取系统时间。 对于我宣布:NSNumber和NSTimeInterval

NSNumber *createdTimeInMilliSec; //in class declaration 

并在我的实例功能之一,我这样做:

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

timeIntervalSinceReferenceDateNSTimeInterval回报,因此如何将其转换为NSNumber?或者我做错了什么?

回答

22

NSTimeInterval被typedef操作如下:typedef double NSTimeInterval;

要创建一个NSNumber用,使用:

NSNumber *n = [NSNumber numberWithDouble:yourTimeIntervalValue]; 
+0

感谢大家的回答和解释 – XMarshall

+2

'NSNumber * n = @(yourTimeIntervalValue);'也可以,看起来更漂亮。 – rr1g0

1

NSTimeInterval是double的typedef。因此,使用NSNumber的便捷构造numberWithDouble:如下:

self.createdTimeInMilliSec= [NSNumber numberWithDouble:([NSDate timeIntervalSinceReferenceDate]*1000)]; 
1

作为NSTimeInterval是双,你可以做

NSNumber *myNumber = [NSNumber numberWithDouble: myTimeInterval]; 
2

我不知道它是从其他的答案明确的 - 但NSTimeInterval是实际上只是一个typedef的双。您可以通过执行[NSNumber numberWithDouble:timeInterval]或更简洁的@(timeInterval)来从中获得NSNumber。