【发布时间】:2011-02-14 04:57:53
【问题描述】:
我正在编写一个使用 Core Data 作为其持久层的 Mac 应用程序,我很好奇对于搜索“所有权”的普遍共识是什么。
假设我有一个名为 Recipe 的类(生成的 NSManagedObject 的子类),我希望能够搜索“包含某种成分的食谱”、“可以养活 4 人以上的食谱”、等等。我可以设想这样的方法:
-(NSArray *)fetchRecipesContaining:(Ingredient *)ingredient;
-(NSArray *)fetchRecipesFeedingMorePeopleThan:(int)count;
并且实现知道如何构造一个合适的 NSFetchRequest/NSPredicate 去获取它们。问题是什么对象通常实现这些方法?在 Java 世界中,这些通常存在于 RecipeFactory 的实例方法中。我还可以在 Recipe 类中看到类方法的案例。
在 Hello World 应用程序(大多数教程似乎都提供)中,逻辑直接嵌入在调用代码中,但是,我并不热衷于将处理 NSFetchRequests 和 NSEntityDescriptions 的样板代码分散在整个调用代码中。我真的更愿意将这些逻辑抽象出来,并允许使用更有意义的 API(如上所述)来获取对象。
我倾向于使用 Recipe 上的类方法(并使用类别实现,这样我就不必修改生成的类),但想把它扔出去,看看其他 Core Data 用户可能会使用什么。
谢谢。
【问题讨论】:
标签: design-patterns core-data nspredicate