2011-09-15 1 views
17

:코어 데이터의 '기본'접근자는 무엇입니까? <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html" rel="nofollow noreferrer">Core Data Programming Guide</a> (내 강조)에서

기본적으로는, 코어 데이터를 동적으로 효율적으로 생성 공공원시 GET 및 관리 객체 클래스의 모델링 특성 (속성 및 관계)에 대한 설정 접근 방법. 내가 목표 - C 시작하기 때문에 코어 데이터 행복하게 mogenerator을 사용하고 적이 있지만 앱 제출이 거부있어 때까지

, 나는 인해 개인 API의 주장 사용, 이것이 무엇을 의미하는지 살펴 본 적이 . 생성 된 setPrimitiveTypeValue: 메서드에 대한 긴 이야기지만 내 질문에 관한 것은 아닙니다.

가이드를 읽는 동안 엔티티 속성에 대한 public 및 primitive 접근 자의 아이디어를 발견했습니다. 또 인용하지만, 더욱 아래 예 :

, 속성 firstName와 엔티티 주어 코어 데이터 자동 firstName, setFirstName:, primitiveFirstNamesetPrimitiveFirstName:를 생성한다.

프리미티브 접근 자란 무엇입니까? 그냥 NSNumber에 배치하지 않고 직접 BOOL 값을 할당 할 수 있습니까? 그렇다면, 왜 발전기가 모든 종류의 <Attribute>Value, set<Attribute>Value:, primitive<Attribute>Value, setPrimitive<Attribute>Value: 접근자를 생성하는 문제를 겪었습니까?

나는 혼란스럽고 누가 도와 줄 수 있습니까?


관련 질문 :

+0

[다른 사람이 이미 답변했습니다] [1] 좋은 답변처럼 보입니다. [1] : http://stackoverflow.com/questions/5509106/why-would-i-need-to-use-a-primitive-accessor-methods-in-a-core-data- 프로젝트 – Simon

답변

10

, 원시적 인 방법은 얻기 및 설정 실제 작업을 수행 KVC 또는 KVO 알림 ('willAccessValueForKey'등)은 발생하지 않습니다. public 메서드는 기본 메서드를 호출하지만 KVO 호출에서 호출을 래핑합니다. 따라서 오브젝트 밖에서는 일반적으로 public 메소드를 호출 할 수 있지만 내부의 이유로 오브젝트의 특성을 사용해야 할 경우 (예 : 다른 특성의 유효성을 검사하거나 파생시키기 위해) 발사를 피하기 위해 원시 메소드를 사용합니다 모든 알림.

는 내가 관심이 있지만 완전히에 정통한하지 않다 대상이기 때문에 내가 대답에 어떤 수정이나 해명을 환영 것

.

+0

굉장한 대답 @jrturton. 사람들이 [Custom Primitive Accessor Methods] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html)를 잠시 살펴보고 싶다면이 링크를 참조로 추가하십시오. # // apple_ref/doc/uid/TP40002154-SW5)를 사용하여 답변을 백업합니다. – Mick

+1

@Patt 와우 이것은 내 첫 번째 답변 중 하나 여야합니다! 과거로부터의 폭발 ... – jrturton

+0

@Mick 그 링크는 이제 폐기되었습니다. – ThomasW

0

사용자 정의에 대한 jrturton의 대답 덮여 문제 특성@ 일 관계 액세서 (Accessor Methods) 공용 접근자는 간단합니다. 및 minusSet : 내부 포장해야하는 :

또한, 완전히 일대 액세서는 사용자 정의 구현, 공공 접근이 NSMutableSet 방법 (unionSet와 함께 원시-접근을 호출 할 수 있습니다 관계 지원 KVO 방법 쌍 (will ... did ...).