[NSCFString timeIntervalSinceReferenceDate]: нераспознанный селектор отправлен экземпляру

Я хотел бы сравнить разницу между двумя датами, но с приведенным ниже кодом я получил ошибку «[NSCFString timeIntervalSinceReferenceDate]: в экземпляр отправлен нераспознанный селектор». Что не так с кодом?

NSDate *dateAdded=[eventDictionary objectForKey:@"dateAdded"];
NSDate *validUntilDate=[eventDictionary objectForKey:@"validUntilDate"];
NSDateComponents *sometimeAgo = [[NSCalendar currentCalendar] components:(NSSecondCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:dateAdded  toDate:validUntilDate  options:0];

person Nimit Pattanasri    schedule 25.06.2011    source источник


Ответы (2)


arrow_upward
8
arrow_downward

Похоже, что dateAdded и/или validUntilDate на самом деле являются строками, а не датами. Может быть, это строки, представляющие даты, но, в конце концов, строки.

person albertamg    schedule 25.06.2011
comment
Вы можете попытаться избежать этого с помощью NSDate* dateAdded=(NSDate*)[eventDictionary objectForKey:@"dateAdded"]; - person Paul; 25.06.2011
comment
Если объект, возвращаемый objectForKey:, не является NSDate, приведение не сделает его таковым. - person albertamg; 25.06.2011
comment
Нет? Если исходной переменной для ключа dateAdded является NSDate*, она должна возвращать NSDate*. Или я ошибаюсь? - person Paul; 25.06.2011
comment
Если значение ключа dateAdded равно NSDate, оно вернет NSDate, и вам не нужно приведение. Если это не NSDate, приведение не поможет. - person albertamg; 25.06.2011
comment
Это правда. Так что, думаю, вы будете правы в своем предположении. - person Paul; 25.06.2011
comment
это значение с плавающей запятой! заключены в кавычки, вот почему typecast ничего не делает :( Кстати любое решение/обходной путь ????? - person AsifHabib; 01.05.2014

arrow_upward
4
arrow_downward

Вам необходимо использовать NSDateFormatter для преобразования ваших строк даты в фактические NSDates.

person uvesten    schedule 25.06.2011
comment
Если дат много, это излишне влияет на производительность. - person Satyam; 25.03.2015