2011-07-25 88 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。