NSManagedObject
에 대한 사용자 지정 코드를 하위 클래스의 범주에 넣는 것이 일반적입니다. 모델을 편집 할 때 Xcode에서 생성 된 하위 클래스를 덮어 쓰게되므로이 클래스의 하위 클래스에 사용자 지정 코드를 넣는 것이 일반적입니다. 나는 이것을 확인하고 싶었다. 클래스 계층에 이미 구현 된 메소드와 카테고리를 결합하는 것이 좋지 않다고 사람들이 말하는 사례를 보았습니다. 나는 이것이 실제 범주를 가진 클래스가 이미 구현 된 메서드를 가지고 있거나 모든 경우에 해당하는 경우에만 해당하는지 확실하지 않습니다.범주가있는 NSManagedObjects
답변
범주의 메서드를 재정의하는 문제는 일반적으로 [super doSomething]
을 사용하는 것처럼 원래 구현을 호출 할 수 없다는 것입니다. 보통, 메소드를 오버라이드 (override) 할 때, 원의 구현이 실행되기 전이나 혹은 후에, 여분의 일을하고있는 원래의 구현을 호출 할 수 있도록 (듯이)하고 싶다.
아주 깨끗한 해결책은 Xcode가 직접 만지지 않는 NSManagedObject 하위 클래스를 생성하도록하는 것입니다. 대신, 덮어 쓰는 것에 대해 걱정하지 않고 편집 할 수있는 각 Xcode 생성 NSManagedObject 하위 클래스의 다른 사용자 정의 하위 클래스를 만듭니다.
Wolf Rentzsch의 mogenerator은 기본적으로이 방법을 사용하며 Xcode가 생성하지 않는 편리한 편리한 메소드를 추가로 생성합니다. 유용한 도구가 될 수 있기 때문에 체크 아웃 할 가치가 있을지 모르지만, 발전기는 당신이하려는 일을 수행 할 필요가 없습니다.
자동 생성 NSManagedObject 하위 클래스의 하위 클래스를 사용하는 경우 - 관계를 어떻게 처리합니까? 객체 A는 객체 B를 가지고 doSomething 메서드를 호출하려고하지만 doSomething은 B의 내 하위 클래스에서 정의되지만 Core Data는 B의 하위 클래스를 반환하지 않습니다. 실제로 B를 반환합니다.이 예제를 어디에서 찾을 수 있는지 알고 있습니까? – Brian
@Brian이 질문에 대한 늦은 답변이라는 것을 알고 있습니다. 그러나 여기에 그것을 고칠 수있는 방법이 있습니다. 자동 생성 된 NSManagedObject 하위 클래스에서 속성을 사용할 수 없게 만듭니다. 그것은 사용자 정의 메소드 만 포함합니다 (즉, 추상화 할 수도 있습니다). 그런 다음 클래스 A는이 클래스를 서브 클래스화할 수 있으며 고유 한 특성을가집니다. 클래스 B에 대해서도 마찬가지입니다. 클래스 B의 메소드를 호출하면 클래스 B가 다른 자동 생성 NSManagedObject에서 해당 메소드를 상속하기 때문에 클래스 B의 메소드가 호출됩니다. 간단히 말해, 수퍼 클래스는 인터페이스 (또는 Obj-c의 프로토콜)가됩니다. 그리고 하위 클래스는이 인터페이스를 구현하는 데이터 저장소입니다. –
@ 브라이언 물론 앤드류의 대답을 뒤집습니다. 이제 수퍼 클래스가 (Core Data 관점에서) 건드릴 수 없기 때문에 하위 클래스는 원하는대로 데이터를 변경할 수 있습니다. –
- 1. 사라지는 NSManagedObjects
- 2. NSFetchedResultsController는 NSManagedObjects
- 3. NSManagedObjects 폐기
- 4. NSManagedObjects 관리
- 5. userInfo를 통해 NSManagedObjects 업데이트
- 6. 비어있는 비어있는 범주가있는 WinForms PropertyGrid
- 7. NSManagedObjects UIViewControllers 전달할 수있는 요리법
- 8. NSManagedObjects 배열을 새 뷰로 전달하십시오.
- 9. 동일한 NSManagedObjects 간의 다중 관계
- 10. 일대 다 관계에 NSManagedObjects 추가
- 11. 서로 다른 자식 범주가있는 GridView 컨트롤
- 12. MVC 2 C# LINQ에서 범주가있는 SQL 검색
- 13. 계층 구조/하위 범주가있는 SQL 테이블 설계
- 14. 열려있는 탭 파일의 여러 범주가있는 코드 편집기?
- 15. 핵심 데이터. ExecuteFetchRequest 오류가있는 NSManagedObjects (RAM이 아님)
- 16. ViewControllers간에 NSManagedObjects 전달 - 랜덤 액세스 오류
- 17. 핵심 데이터 - 여러 스레드 중 NSManagedObjects 공유
- 18. 아이폰 : 코어 데이터 : NSManagedObjects 및 jQuery과 충돌
- 19. 핵심 데이터 외부의 NSManagedObjects 구조 재사용
- 20. NSManagedObjects 사이의 관계를 설정할 수 없습니다.
- 21. 시간 표시 막대 대신 범주가있는 촛대 차트 jfreechart
- 22. 범주가있는 오프라인 "복합"Eclipse 업데이트 사이트 구축을위한 솔루션
- 23. NSManagedObjects 또는 NSManagedObjectIDs의 NSArray를 저장하는 것이 더 좋습니까?
- 24. WordPress - 모든 범주가 표시되지만 DIV, CLASS 및 ID가 다른 각 범주가있는 사용자 지정 루프 만들기
- 25. NSManagedObjects NSDate 특성의 달에 의해 정의 된 섹션으로 그룹화 나열합니다 UITableView 빌드하는 가장 좋은 방법은 무엇입니까?
- 26. 자 NSPredicate "SELF <관계><관계><object> == %의 @..."나는 <code>NSManagedObjects</code> 다음 한
- 27. to-many without insertNewObjectForEntityForName
- 28. KnockoutJS 필터 ObservableArray 다른 ObservableArry에 의해
- 29. 하나의 클래스에 많은 카테고리가 있다면 어떻게됩니까?
- 30. 핵심 데이터 및 UITableView 프랙티스/질문
저는 오랜 시간이 질문에 어려움을 겪었으며 마침내 객체 계층 구조를 수정 한 솔루션을 사용했습니다. 여기에 관심이 있다면 여기에서 읽을 수 있습니다 : http://bikepress.org/?p=1120. – chris