Créer NSDate à partir de l’horodatage Unix

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)