2009-10-12 3 views
2

XCode 모델 인터페이스에 의해 생성 된 NSManagedObject 하위 클래스가 있습니다.
이 클래스에는 NSString 및 NSNumber 멤버가 있고 NSDate 멤버가 있습니다. 그것은이다코코아 터치, NSManagedObject : 속성을 설정할 때 예외

@property (nonatomic, retain) NS{String,Number}* propname; 

되는 대신하는 것을 제외하고
2009-10-12 21:53:32.228 xxx[2435:20b] Failed to call designated initializer on NSManagedObject class 'Item'
2009-10-12 21:53:32.228 xxx[2435:20b] *** -[Item setDate:]: unrecognized selector sent to instance 0x3f7ed30
2009-10-12 21:53:32.229 xxx[2435:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Item setDate:]: unrecognized selector sent to instance 0x3f7ed30'

날짜 매개 변수 그냥 다른 사람처럼 : 나는있는 NSDate 멤버를 설정하려고하면

, 나는 다음과 같은 예외를 얻을

@property (nonatomic, retain) NSDate *date; 

, BTW 난에 할당하고있어 Item 인스턴스는 단지 일반 [[Item alloc] init], 관련 컨텍스트 또는 기타가 없습니다.

처음에는 NSDate *에 결함이 있다고 생각한 다음 [NSDate date]에 할당하려고 시도했지만 아무 것도하지 않았습니다. 여전히 충돌합니다.

아이디어가 있으십니까?

+0

이 표기법을 "NS {String, Number}"란 의미는 무엇입니까? –

+1

@ValeryPavlov bash에서 가져온 것으로, NSString 및 NSNumber로 확장됩니다. ObjC에서는 작동하지 않습니다. 그런 식으로 입력하는 것이 더 빠릅니다. 예 : 예제 {1,2,3}은 Example1, Example2, Example3으로 확장됩니다. – Prody

답변

9

당신은없이 NSManagedObject 서브 클래스를 인스턴스화 할 수있는 관련 NSManagedObjectContext (잘 당신이 보여준대로 ,하지만 결과는 거의 확실하게 당신이 원하는되지 않습니다).

이것 로그 힌트 첫번째 라인 :

2009-10-12 21:53:32.228 xxx[2435:20b] Failed to call designated initializer on NSManagedObject class 'Item' 

모든 오브젝티브 C 클래스 호출되어야 초기화 방법 중, 인 지정 초기화, (일반적으로)이 명시 적으로 또는 다른 편의 초기화 프로그램을 통해. NSManagedObject의 경우 이것은 -[NSManagedObject initWithEntity:insertIntoManagedObjectContext:]입니다. 지정된 이니셜 라이저가 실패하면 인스턴스가 제대로 초기화되지 않을 수 있기 때문에 정의되지 않은 것으로 간주되고 올바르지 않은 동작이 발생할 수 있습니다. 나는 NSManagedObject 이니셜 라이저가 엔티티의 속성에 대해 @synthesize의 속성 액세스를 지원하는 기계를 설정했다고 추측합니다. 이 기계가 없으면 인스턴스는 '호출에 응답 할 수 있다고 생각하지 않을 수 있으며 setData:을 호출하면 선택자를 찾을 수 없음 오류가 발생합니다.

+0

오, 나는 그때의 상황을 덧붙이려고 노력할 것이다. 이 속성 만 실패하기 때문에 꽤 이상합니다. – Prody

+0

다른 속성과의 불일치가 약간의 행운이라고 생각합니다. –