Comment créer un NSDate à partir d’un horodatage Unix?
channel.startDate = [NSDate dateWithTimeIntervalSince1970: (NSTimeInterval)[channelJson objectForKey:@"broadcastStartedTime"]];
Je reçois cette erreur:
104: erreur: valeur du pointeur utilisée lorsqu’une valeur à virgule flottante était attendue
channels.startDate
est un NSDate*
. La valeur de la clé “broadcastStartedTime” est un Number
Javascript converti en NSNumber
ou NSDecimalNumber
par la bibliothèque de l’parsingur SBJson .
Essayez plutôt ceci:
NSNumber *startTime = channelJson[@"broadcastStartedTime"]; channel.startDate = [NSDate dateWithTimeIntervalSince1970:[startTime doubleValue]];
Votre valeur est piégée dans un type de pointeur de NSNumber
. La méthode dateWithTimeIntervalSince1970
attend une primitive NSTimeInterval
(qui, sous les couvertures, est un double
).
Utilisez -doubleValue
:
// NSTimeInterval is just a typedef for double NSTimeInterval interval = [[channelJson objectForKey:@"broadcastStartedTime"] doubleValue]; channel.startDate = [NSDate dateWithTimeIntervalSince1970:interval];
Vous devez déballer le NSNumber:
channel.startDate = [NSDate dateWithTimeIntervalSince1970:[[channelJson objectForKey:@"broadcastStartedTime"] doubleValue]];
NSTimeInterval
(qui est un timestmap unix) à la conversion NSDate
dans Swift:
let timeInterval = NSDate().timeIntervalSince1970 // the the unix timestamp NSDate(timeIntervalSince1970: timeInterval)