編輯:忽略此問題。我沒有正確地查看我的測試數據。我的代碼如下。 但是有一些很好的答案。謝謝!NSPredicate比較字符串小於其他字符串
爲方便起見,我們將所有數據作爲字符串存儲在覈心數據中。現在我想獲取具有比指定時間戳(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];
}
}
}
我希望你明白我的意思。這有點難以解釋。
我知道,但由於其他原因,我不能這樣做。我不是數據模型的所有者。 – sanna 2011-02-17 10:15:46