РЕДАКТИРОВАТЬ: игнорировать этот вопрос.Я не смотрел на свои тестовые данные должным образом.Мой код ниже работает.Но есть несколько хороших ответов.Спасибо!
Для удобства мы храним все наши данные в виде строк в основных данных.Теперь я хочу получить все объекты объекта, у которого временная метка старше указанной временной метки (oldDate).Это означает, что я хочу сделать сравнение с NSPredicate, чтобы NSFetchRequest возвращал объекты, у которых временная метка меньше указанной временной метки.Следующее, очевидно, не работает, но это лучшее, что я нашел на этом пути.
- (void)deleteRecordsOlderThan:(NSString*)oldDate {
NSError *error = nil;
NSFetchRequest *request =[[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:tableName inManagedObjectContext:context]];
[request setIncludesPropertyValues:NO];
[request setIncludesPendingChanges:YES];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"timestamp < %@)",oldDate];
NSLog(@"Predicate: %@",predicate);
[request setPredicate:predicate];
NSArray *filteredObjects = [context executeFetchRequest:request error:&error];
[request release];
if (error) {
NSLog(@"Error fetching objects for deletion: %@", [error description]);
return;
}
NSLog(@"Number of old objects to delete:%d",filteredObjects.count);
for (NSManagedObject * nsObject in filteredObjects) {
[context deleteObject:nsObject];
}
}
}
Надеюсь, вы понимаете, о чем я.Это немного сложно объяснить.