我正在編寫一個使用核心數據作爲其持久層的Mac應用程序,並且對搜索的「所有權」普遍一致性感到好奇。使用謂詞搜索核心數據實體
假設我有一個名爲Recipe的類(NSManagedObject的生成子類),我希望能夠搜索例如「包含某種成分的食譜」,「可以餵食超過4人的食譜」 , 等等。我可以設想類似的方法:
-(NSArray *)fetchRecipesContaining:(Ingredient *)ingredient;
-(NSArray *)fetchRecipesFeedingMorePeopleThan:(int)count;
和實現知道如何構建一個合適的NSFetchRequest/NSPredicate去得到他們。問題是什麼對象通常實現這些方法?在Java世界中,這些通常位於RecipeFactory的實例方法中。我也可以在Recipe類中看到類方法的情況。在一個Hello World應用程序(大多數教程似乎提供)中,邏輯直接嵌入在調用代碼中,但是,我並不那麼熱衷於處理NSFetchRequests的樣板代碼,NSEntityDescriptions通過調用代碼散佈所有代碼。我真的更喜歡將這個邏輯抽象出來,並允許一個更有意義的API(每個上面)來獲取對象。
我傾向於食譜上的類方法(並使用類別實現,因此我不必修改生成的類),但希望將其拋出,並查看其他Core Data用戶可能會使用哪些類。
謝謝。