iOS核心数据 - 删除超过一周的对象

时间:2016-04-08 02:12:58

标签: ios objective-c core-data

在我的应用中,当用户保存,比方说,“本周最喜欢的餐厅”对象时,我首先想要获取我目前在textarea中保存的所有餐馆,并检查哪些餐馆的价格高于一个周。我已经让每个Core Data个对象拥有一个Restaurant属性,该属性在保存对象时会被设置。

删除所有超过一周的dateSaved个对象后,我会将用户选择的餐馆保存到Restaurant

我如何完成这项工作?

1 个答案:

答案 0 :(得分:2)

像这样获取记录

NSManagedObjectContext *moc = …;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Restaurant"];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];
if (!results) {
    DLog(@"Error fetching Restaurant objects: %@\n%@", [error localizedDescription], [error userInfo]);
    abort();
}

然后取结果数组并枚举如下:

NSMutableArray *newerRestaurantsArray = [NSMutableArray alloc] init];
for (id object in results){
//or use a block if you want
NSManagedObject *restaurant = (NSManagedObject *)object;

if (object.dateSaved > date a week ago){

[newRestaurantsArray addObject: object];
}

}

newRestaurantsArray将拥有您想要的。然后,您必须删除您不想要或删除的所有内容,只需保存您想要的内容即可。请查看此tutorial,其中显示了如何保存并使其适用于您的实施。

您还可以使用NSPredicate来获取所需的结果。查看this SO回答。看看你的具体情况如何。