Проблема с CoreData и поиском даты

#objective-c #core-data #io

#objective-c #core-data #io

Вопрос:

У меня есть простая модель, которая представляет дни приема пищи и тренировок. У меня возникла проблема с получением дня из CoreData. Я получаю следующую ошибку.

 2011-11-14 11:41:44.999 CalorificCounter[21002:fb03] -[__NSCFString timeIntervalSinceReferenceDate]: unrecognized selector sent to instance 0x6a6d1a0
2011-11-14 11:41:45.001 CalorificCounter[21002:fb03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString timeIntervalSinceReferenceDate]: unrecognized selector sent to instance 0x6a6d1a0'
  

Код

 -(Day *)getDayForDate:(NSDate *)date
{
    Day *day;
    date = [self dateAtStartOfDay:date];

    NSFetchRequest *request = [[NSFetchRequest alloc]init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Day" 
                                        inManagedObjectContext:[self managedObjectContext]];

    //Find the object that matches the given date from a predicate
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"date == "%@"",date];


    [request setEntity:entity];
    [request setPredicate:predicate];

    //Try to fetch
    NSError *error;
    NSArray *result = [[self managedObjectContext] executeFetchRequest:request 
                                                             error:amp;error ] ;
  

Ошибка возникает при выполнении запроса на выборку. Я отследил выполнение, и все, кажется, имеет правильный тип (по крайней мере, я никогда не передаю строку по кругу). Заранее спасибо.

ОБНОВЛЕНИЕ Не заключайте указанную дату в кавычки

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"date == %@",date];
  

Комментарии:

1. Вероятно, что-то не так с вашим хранилищем данных. По какой-то причине он ожидает дату, когда на самом деле получает строку. Взгляните на свой магазин по-другому.

2. Я отправляю дату, но она получает строку. Да, здесь что-то не так с типами.

3. Вы решили эту проблему?

4. На вопрос ответил OP внутри вопроса и должен быть удален.

Ответ №1:

Эта проблема возникает, когда вы присваиваете строку объекту date. Проверьте значение даты и верните объект NSDate