Ios 核心数据获取方法

Ios 核心数据获取方法,ios,objective-c,core-data,Ios,Objective C,Core Data,我已经管理了使用fetch请求访问的对象。 每次我想要对象时,一遍又一遍地编写获取请求是一件乏味的事情,因此我为自己创建了一个包含获取请求的方便方法 我的对象是WeekDay,为了检索所有WeekDay对象,我在WeekDay类中创建了以下方法: + (NSArray *)allWeekDaysWithManagedObjectContext:(NSManagedObjectContext *)managedObjectContext { NSFetchRequest *fetchReq

我已经管理了使用fetch请求访问的对象。 每次我想要对象时,一遍又一遍地编写获取请求是一件乏味的事情,因此我为自己创建了一个包含获取请求的方便方法

我的对象是WeekDay,为了检索所有WeekDay对象,我在WeekDay类中创建了以下方法:

+ (NSArray *)allWeekDaysWithManagedObjectContext:(NSManagedObjectContext *)managedObjectContext
{
    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"WeekDay"];
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"day" ascending:YES];
    fetchRequest.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
    return [managedObjectContext executeFetchRequest:fetchRequest error:nil];
}
这段代码是有效的,但我确实觉得有些地方出了问题。 每次都将managedObjectContext作为参数移动,尽管我只有一个managedObjectContext,但这很烦人。我读到苹果建议视图控制器像这样传递managedObjectContext,但是这个建议仍然适用于非ViewController类吗


这些方法是否有命名约定?每次我使用这种方法时,我真的感觉到这段代码很乏味。

您在这里开发的代码很好。您应该传入上下文,以便在添加另一个上下文时不需要重构。如果需要的话,可以将它们放入helper类中,但我倾向于将它们放入数据对象类中。它非常清楚地说明了发生了什么。

使用一个具有moc as@属性的helper类,它可以为您完成所有CoreData工作:保存、获取等。这样您就可以编写一个非常通用的获取请求,在其中传递entityname、属性、排序、,等等@Koen首先感谢你的帮助:你的建议其实是个不错的主意。如果我采用上面的方法并对其进行推广,它将对其他类有用,但我认为我仍然必须将managedObjectContext作为参数传递,不是吗?因为这个方法又是一个类方法,谢谢你的帮助:不,你不必这么做。helper类的上下文有一个@property,您可以使用result=[self.context executeFetchRequest:request error:&error],而且您不需要使用类方法来实现此目的,并确保您的错误测试没有通过nil。@Koen如果不使用类方法,我如何创建此方法?我的意思是,我不知道对象是什么,我还没有检索到它,所以这个方法怎么可能是实例方法呢?你需要创建一个全新的NSObject子类,你称之为CoreDataHelper或类似的东西,并将其作为AppDelegate的@属性,这就是你访问它的方式。