Создание NSDate из метки времени Unix
Как создать NSDate из метки времени Unix?
channel.startDate = [NSDate dateWithTimeIntervalSince1970:
(NSTimeInterval)[channelJson objectForKey:@"broadcastStartedTime"]];
Я получаю эту ошибку:
104: ошибка: значение указателя, используемое там, где ожидалось значение с плавающей запятой
channels.startDate
является NSDate*
. Значение для ключа "broadcastStartedTime" - это Javascript Number
, преобразованный в NSNumber
или NSDecimalNumber
в библиотеку парсеров SBJson.
Ответы
Ответ 1
Попробуйте это вместо:
NSNumber *startTime = channelJson[@"broadcastStartedTime"];
channel.startDate = [NSDate dateWithTimeIntervalSince1970:[startTime doubleValue]];
Ваше значение попадает в тип указателя NSNumber
. Метод dateWithTimeIntervalSince1970
ожидает примитив NSTimeInterval
(который под обложками является double
).
Ответ 2
Используйте -doubleValue
:
// NSTimeInterval is just a typedef for double
NSTimeInterval interval = [[channelJson objectForKey:@"broadcastStartedTime"] doubleValue];
channel.startDate = [NSDate dateWithTimeIntervalSince1970:interval];
Ответ 3
Вам необходимо развернуть NSNumber:
channel.startDate = [NSDate dateWithTimeIntervalSince1970:[[channelJson objectForKey:@"broadcastStartedTime"] doubleValue]];
Ответ 4
NSTimeInterval
(это временная карта unix) на NSDate
в Swift:
let timeInterval = NSDate().timeIntervalSince1970 // the the unix timestamp
NSDate(timeIntervalSince1970: timeInterval)