objective-c - resumida - sistema operativo unix caracteristicas
Crear NSDate desde la marca de tiempo de Unix (4)
¿Cómo creo un NSDate a partir de una marca de tiempo Unix?
channel.startDate = [NSDate dateWithTimeIntervalSince1970:
(NSTimeInterval)[channelJson objectForKey:@"broadcastStartedTime"]];
Me sale este error:
104: error: valor de puntero utilizado donde se esperaba un valor de coma flotante
channels.startDate
es un NSDate*
. El valor para la clave "broadcastStartedTime" es un Number
Javascript convertido en un NSNumber
o NSDecimalNumber
por la biblioteca del analizador SBJson .
Necesitas desenvolver el NSNumber:
channel.startDate = [NSDate dateWithTimeIntervalSince1970:[[channelJson objectForKey:@"broadcastStartedTime"] doubleValue]];
Pruebe esto en su lugar:
NSNumber *startTime = channelJson[@"broadcastStartedTime"];
channel.startDate = [NSDate dateWithTimeIntervalSince1970:[startTime doubleValue]];
Su valor está atrapado en un tipo de puntero de NSNumber
. El método dateWithTimeIntervalSince1970
espera un primitivo NSTimeInterval
(que, bajo las coberturas, es un double
).
Use -doubleValue
:
// NSTimeInterval is just a typedef for double
NSTimeInterval interval = [[channelJson objectForKey:@"broadcastStartedTime"] doubleValue];
channel.startDate = [NSDate dateWithTimeIntervalSince1970:interval];
NSTimeInterval
(que es el mapa de tiempo de Unix) para la conversión de NSDate
en Swift:
let timeInterval = NSDate().timeIntervalSince1970 // the the unix timestamp
NSDate(timeIntervalSince1970: timeInterval)