ios - iOS核心数据-删除早于一周的对象

标签 ios objective-c core-data

在我的应用程序中,当用户保存一个“本周最喜欢的餐厅”对象时,我首先要获取我当前在Core Data中保存的所有餐厅,并检查哪些餐厅早于一周。我已经拥有了每个Restaurant对象,每个对象都拥有一个dateSaved属性,该属性在保存对象时被设置。

删除所有早于一周的Restaurant对象之后,然后将用户选择的餐厅保存到Core Data中。

我该如何完成?

最佳答案

像这样获取记录

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这样的答案。看看如何针对您的特定情况。

关于ios - iOS核心数据-删除早于一周的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36490367/

相关文章:

android - memcpy()/mktime() 在 iOS 和 Android 上是线程安全的吗?

ios - Swift 向后兼容 iOS 5 的版本

ios - 需要有关 Objective-c 属性概念的帮助

ios - 如果设备是 iPhone,则禁用某些 View Controller 中的方向

iphone - 如何显示 UIMenuController 到 UIBarButtonItem

iphone - UIDatePicker 旁边的 UIPickerView 不按 IB 呈现?

iphone - 按钮在 3.5 英寸格式中消失 (Xcode)。

core-data - 检查零核心数据属性导致 EXC_BAD_ACCESS

xcode - 关闭 XCode 核心数据模型的代码生成

objective-c - 使用绑定(bind)时如何使子 NSManagedObjectContext 保持最新