Подтвердить что ты не робот

Создание NSDate из метки времени Unix

Как создать NSDate из метки времени Unix?

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

Я получаю эту ошибку:

104: ошибка: значение указателя, используемое там, где ожидалось значение с плавающей запятой

channels.startDate является NSDate*. Значение для ключа "broadcastStartedTime" - это Javascript Number, преобразованный в NSNumber или NSDecimalNumber в библиотеку парсеров SBJson.

4b9b3361

Ответ 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)