2011-02-14 3 views
0

코어 데이터를 지속성 레이어로 사용하는 Mac 응용 프로그램을 작성 중이며 검색의 "소유권"과 관련하여 일반적인 합의가 무엇인지 궁금합니다.술어를 사용하여 코어 데이터 엔티티 검색하기

레시피 (NSManagedObject의 하위 클래스 생성)라는 클래스가 있고 "특정 재료를 포함하고있는 요리법", "4 명 이상의 피드를 제공 할 수있는 요리법" , 등등. 내가 좋아하는 방법을 생각할 수 있습니다

-(NSArray *)fetchRecipesContaining:(Ingredient *)ingredient; 
-(NSArray *)fetchRecipesFeedingMorePeopleThan:(int)count; 

및 구현을 가서 적절한 NSFetchRequest/자 NSPredicate를 구성하는 방법을 알고 있습니다. 문제는 이러한 객체를 일반적으로 구현하는 객체입니다. Java 세계에서, 이들은 종종 RecipeFactory의 인스턴스 메소드에 존재합니다. 레서피 클래스의 클래스 메소드에 대한 사례도 볼 수 있습니다.

Hello World 응용 프로그램 (대부분의 자습서에서 제공하는 것처럼 보임)은 로직이 호출하는 코드에 직접 포함되어 있지만 NSFetchRequests 및 NSEntityDescriptions를 처리하는 상용구 코드가 호출 코드 전체에 걸쳐있는 것으로 나타났습니다. 그 논리를 추상화하고 객체를 가져 오는 데 더 의미있는 API (위와 같음)를 허용하는 것이 좋습니다.

레시피 (및 생성 된 클래스를 수정할 필요가 없도록 카테고리를 사용하여 구현 됨)에 대한 클래스 메소드쪽으로 기울어 져 있지만 거기에 버리고 다른 코어 데이터 사용자가 사용할 수있는 것을 확인하고 싶습니다.

감사합니다.

답변

0

카테고리를 사용하십시오. 참고하면 Xcode에서 생성 한 클래스는 그대로 유지되며 관리 대상 객체 클래스의 기능을 확장 할 수 있습니다.

0

클래스 방법과 함께 접근 방식을 사용하고 있습니다. 나는 그것이 좋은지 확실하지 않았지만 아직 그것에 문제가 없었습니다. 또한 ActiveRecord와 함께 Ruby on Rails에서 Cocoa/CoreData를 보았습니다. ActiveRecord 라이브러리에서도 동일한 방식으로 구현 되었기 때문에 그렇게하는 것이 논리적 인 것처럼 보였습니다.

관련 문제