43 votes

Créer NSDate de timestamp Unix

Comment puis-je créer un NSDate à partir d'un timestamp Unix?

channel.startDate = [NSDate dateWithTimeIntervalSince1970:
(NSTimeInterval)[channelJson objectForKey:@"broadcastStartedTime"]];

J'obtiens cette erreur:

104: erreur: la valeur du pointeur utilisé lorsqu'un valeur en virgule flottante qui était attendu

channels.startDate est NSDate*. La valeur de la clé "broadcastStartedTime" est un code Javascript Number converti en NSNumber ou NSDecimalNumber par le SBJson parser.

55voto

Wayne Hartman Points 8701

Essayez plutôt ceci:

channel.startDate = [NSDate dateWithTimeIntervalSince1970:
[[channelJson objectForKey:@"broadcastStartedTime"] doubleValue]];

Votre valeur est pris au piège dans un type de pointeur d' NSNumber. L' dateWithTimeIntervalSince1970 méthode s'attend à une primitive double.

7voto

BJ Homer Points 29168

Utiliser -doubleValue:

// NSTimeInterval is just a typedef for double
NSTimeInterval interval = [[channelJson objectForKey:@"broadcastStartedTime"] doubleValue];
channel.startDate = [NSDate dateWithTimeIntervalSince1970:interval];

4voto

Wevah Points 17636

Vous avez besoin de déballer le NSNumber:

channel.startDate = [NSDate dateWithTimeIntervalSince1970:[[channelJson objectForKey:@"broadcastStartedTime"] doubleValue]];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X