2012-04-28 4 views
1

내 모델에 "List"라는 상위 엔티티와 "UserList"라는 하위 엔티티가 있습니다.이 엔티티는 단지 일종의 목록입니다. "UserList"는 자체 속성이나 관계가 없으며 List에서 모든 것을 상속받습니다. List는 ListItem과 많은 관계가 있습니다.핵심 데이터 상위 엔티티 NSManagedObject 하위 클래스를 생성했습니다

XCode 4.2에 NSManagedObject 하위 클래스를 생성하도록 요청합니다. 목록 은 내가

- (void)insertObject:(NSManagedObject *)value inListItemsAtIndex:(NSUInteger)idx; 
- (void)removeObjectFromListItemsAtIndex:(NSUInteger)idx; 
... 

생성 된 "UserList에"클래스가 "목록"의 서브 클래스로 선언하지만, 경우 확인 될 어떤 메소드를 선언하지 않는 그러나

하지 무엇을 먹으 렴을 포함하여 무엇을 기대할 생성 그것은 생성했다.

@interface UserList : NSManagedObject 
@end 

UserList는 실제로 List의 하위 클래스입니까? 헤더를 바꿀 수 있습니까? 아니면 계속 진행되고있는 무언가입니까?

답변

3

몇 가지 사항을 확인하십시오. 먼저 List 및 UserList 엔터티에 클래스 이름을 지정했는지 확인한 다음 UserList가 List를 부모 엔터티로 선언했는지 확인하십시오.

발전기가 까다 롭습니다. 모델 GUI에 클래스 이름을 지정하지 않은 경우 즉시 생성됩니다. 불행하게도, 생성 된 순서에 따라 올바른 정보 (일부로 생성 된 이미징 UserList)로 생성되지 않을 수도 있습니다 ... List에 클래스 이름을 특별히 지정하지 않은 경우에는 사용을 알기 만합니다. NSManagedObject).

관례 상, 나는 항상 모델 GUI에 클래스 이름을 지정합니다. 나는 이것이 각 엔티티 (엔티티에 이름을 부여하는 곳) 아래에 클래스를 할당 할 때 이런 일이 발생하는 것을 보지 못했지만 일어날 수 있습니다.

클래스 파일을 다시 생성하십시오. 이번에는 올바르게 생성 될 수 있습니다. 코멘트 후

편집

해명 ...

참고 : 불행하게도, 엑스 코드는이 문제에 대해 매우 일관되고 있습니다. 엔티티에 클래스 이름을 명시 적으로 제공하지 않으면이를 참조하는 다른 클래스 이름이 "잘못된"클래스 이름으로 생성됩니다.

작업 흐름에 대해 다음 옵션 중 하나를 제안합니다.

  1. 항상 각 엔티티의 GUI에 클래스 이름을 지정하십시오.

  2. 처음 생성 할 때 항상 클래스를 두 번 생성하십시오.

  3. Xcode 클래스 생성기 대신에 Mogenerator https://github.com/rentzsch/mogenerator#readme을 사용하십시오.

+0

우와. 그것은 효과가 있었다. 나는 아무것도 변경하지 않았고 제안 된대로 UserList를 다시 생성했습니다. 변경된 유일한 점은 UserList를 List의 하위 클래스로 선언한다는 것입니다. 나는 Xcode가 그렇게 모순되지 않았 으면 좋겠다. 감사. – David

관련 문제