2011-07-25 15 views
6

Estoy tratando de obtener la hora del sistema en milisegundos. Para que han declarado:NSNumber y NSTimeInterval

NSNumber *createdTimeInMilliSec; //in class declaration 

y en una de mis funciones ejemplo, yo haciendo:

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

timeIntervalSinceReferenceDate retornos en NSTimeInterval, por lo que la forma de convertir eso en NSNumber? O lo que estoy haciendo mal?

Respuesta

22

NSTimeInterval se typedefed de la siguiente manera: typedef double NSTimeInterval;.

Para crear un NSNumber con, el uso:

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

gracias a todos por las respuestas y la explicación – XMarshall

+2

'NSNumber * n = @ (yourTimeIntervalValue);' funciona también, y se ve más bonito. – rr1g0

1

NSTimeInterval es un typedef para un doble. Así que utilice NSNumber 's constructor de conveniencia numberWithDouble: de la siguiente manera:

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

Como NSTimeInterval es un doble, que podría hacer

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

No estoy seguro de que es claro a partir de las otras respuestas - pero NSTimeInterval es en realidad solo un typedef'ed doble. Puede obtener un NSNumber haciendo [NSNumber numberWithDouble:timeInterval] o incluso más sucintamente @(timeInterval).