2009-12-24 7 views
18

핵심 데이터 생성 클래스에 사용자 지정 메서드를 추가하는 가장 좋은 방법은 무엇입니까?핵심 데이터 클래스에 사용자 지정 메서드 추가

예를 들어 "firstname"및 "lastname"속성이있는 "Person"엔티티가 있다고 가정 해 보겠습니다. firstname 및 lastname 속성의 연결을 반환하는 "fullname"메서드를 추가하고 싶습니다.

생성 된 .h 및 .m 파일에 메서드를 추가 할 수는 있지만 내 엔티티가 여전히 변경 될 수있는 개발 중에는 유지하기가 어려울 수 있습니다. .h 및 .m 파일을 다시 작성하면 이러한 변경 사항을 겹쳐 쓰게됩니다. 또 다른 아이디어는 생성 된 클래스를 서브 클래스 화하고 거기에 메소드를 추가하는 것입니다.

더 좋은 방법이 있습니까?

답변

0

엔티티에 대한 고유 한 NSManagedObject 서브 클래스를 만듭니다.

더 나은 내가 직접 데이터 속성에 연결되지 않은 사용자 정의 메소드를 추가하는 가장 좋은 방법은 범주를 사용하는 것을 알게 NSManagedObject documentation

+0

나를위한 관리 객체 클래스를 생성하는 .xcdatamodel 파일을 사용하고 있습니다. 내 질문에 대한이 원래 클래스의 예제와 같은 사용자 지정 메서드를 사용하여이 생성 된 클래스 (이미 NSManagedObject 하위 클래스) 추가 사용자 지정하는 것입니다. 감사합니다. – chris

+0

데이터 모델러를보십시오. 왼쪽 상단에는 엔티티가 나열됩니다. 또한 기본적으로 NSManagedObject 인 기반 클래스를 나열합니다. 해당 NSManagedObjectS 하위 클래스의 이름을 변경할 수 있습니다. – Abizern

+0

나는 오해해야합니다. NSManagedObject 하위 클래스를 만들고이를 생성 된 클래스의 기본 클래스로 사용하면 NSManagedObject :: Person :: PersonMO 계층 구조를 갖게됩니다. PersonMO 클래스에는 내 특성이 들어 있고 Person 클래스에는 내 메서드가 들어 있습니다. 그러나 PersonMO 속성은 Person 메소드에 표시되지 않습니다. – chris

38

에 설명했다. 이것은 일반적으로 코어 데이터 엔티티를 데이터 모델러에서 NSManagedObject의 고유 한 서브 클래스로 생성하는 경우 가장 잘 작동하지만 잘 수행하지 않아도됩니다. 이 방법으로 모든 기계 생성 코드는 기본 .h 및 .m 파일에 머물 수 있으며 모든 사용자 정의 코드는 해당 클래스의 해당 카테고리에 대한 .h 및 .m을 사용합니다.

+12

+1. 범주를 사용하면 모델을 변경하면서 Xcode에서 생성 한 엔터티 머리글과 구현을 분해하고 다시 작성하면서 고유 한 사용자 지정 메서드를 그대로 유지할 수 있습니다. –

1

이 메서드를 사용자 지정 NSManagedObject 하위 클래스에 추가하는 것이 좋습니다. 사용자 정의 메서드를 유지하면서 데이터 모델이 변경 될 때 접근자를 유지하는 것에 대해 걱정이된다면 "Wolf"Rentzsch의 mogenerator을 참조하는 것이 좋습니다. 많은 사람들이 이런 목적으로이 도구로 맹세합니다.

+3

mogenerator는 프로젝트 복잡성을 추가하고 실제 CoreData 스택에서 멀리 떨어져 있습니다. 범주는 인스턴스 변수 등을 많이 사용하지 않는 한 매우 우아한 방법입니다. –

+2

@BenLachman이 언급 한 복잡성 외에도 훌륭한 디자인이 아닙니다. NSManagedObject 하위 클래스의 메소드는 CoreData와의 모델 유지와 직접적으로 관련됩니다. 그들은 프리젠 테이션 레이어의 데이터를 포맷해서는 안됩니다. – memmons

관련 문제