iOS NSDate Core Data Сравнение запроса на выборку не работает - PullRequest
5 голосов
/ 08 марта 2011

Может быть, вы можете мне помочь. Что не так с этим кодом:

-(NSMutableArray *)returnItemsWithName:(NSString *)name{

    NSFetchRequest *fetch=[[NSFetchRequest alloc] init];
    NSEntityDescription *entity=[NSEntityDescription entityForName:@"XYZ" inManagedObjectContext:[self managedObjectContext]];
    [fetch setEntity:entity];
    NSDate *sevenDaysAgo = [appDelegate dateByAddingDays:-7 toDate:[NSDate date]];
NSPredicate *pred= [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"originTime >= %@", sevenDaysAgo]];
    [fetch setPredicate:pred];
    NSError *fetchError=nil;
    NSMutableArray *fetchedObjs = [[[self managedObjectContext] executeFetchRequest:fetch error:&fetchError] retain];
    if (fetchError!=nil) {
        return nil;
    }

    return fetchedObjs;

}

линия

fetchedObjs = [[[self managedObjectContext] executeFetchRequest:fetch error:&fetchError] retain]; 

вылетает с ошибкой:

* Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Невозможно проанализировать строку формата« originTime> = 2011-02-28 21:07:37 +0000 "'

Все объекты НЕ равны нулю, а originDate является NSDate в базе данных CD

1 Ответ

10 голосов
/ 08 марта 2011

Ваша проблема заключается в следующем:

[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"originTime >= %@", sevenDaysAgo]];

predicateWithFormat: уже хочет строку формата. Это ненужно и, как вы обнаружили, неправильно делать то, что вы делаете. Это довольно легко исправить, хотя:

[NSPredicate predicateWithFormat:@"originTime >= %@", sevenDaysAgo];

Это будет отлично работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...