2013-12-16 3 views
3

내가 관리 개체 컨텍스트를 저장하고있어, 그리고 그것을 할 다음 사용하고 있습니다 :호환되지 않는 포인터 유형에서 'NSEntityDescription *'

그것은 작동
trainingDayObject = [NSEntityDescription entityForName:@"trainingDay" inManagedObjectContext:self.context]; 

이 모든 것이 좋은 것 같습니다, 하지만 난 경고를 받고 있어요 :

Incompatible pointer types assigning to 'VitTrainingDay *' from 'NSEntityDescription *' 

VitTrainingDay이 코어 데이터 엔티티 TrainingDay의 NSManagedObject 서브 클래스입니다. trainingDayObject 내가 NSEntityDescription에 문서를 읽는 시도했습니다 VitTrainingDay

의 인스턴스이지만, 내가 엔티티에 할당하고있어 이후로, 나는 문제가 무엇인지에 대한 혼란 스러워요.

저는 핵심 데이터와 Objective-C에 익숙하지 않아, 정말 분명하다면 용서해주세요. 며칠 동안 나를 귀찮게하고있어. 이 작업을 수행 할 때

답변

4

는 :

[NSEntityDescription entityForName:@"trainingDay" inManagedObjectContext:self.context]; 

는 당신이 얻을 것은 NSEntityDescription의 인스턴스입니다. 이것은 Xcode의 핵심 데이터 모델 편집기에서 구성한 엔티티 유형과 동일한 객체입니다. 해당 엔티티의 인스턴스가 아닌 유형 엔티티를 나타냅니다.

오류 메시지에서 trainingDayObject은 관리되는 개체의 인스턴스에 대한 포인터 인 VitTrainingDay *으로 선언되어있는 것처럼 보입니다.

차이점은 클래스와 인스턴스의 차이와 똑같은 개념입니다. 마치 문자열의 특정 인스턴스로 간주되는 무언가에 NSString 클래스를 할당하려는 것과 같습니다. 이 방법 대신 당신에게 개체 유형 개체 자체를주는, 엔터티 유형의 새 인스턴스를 생성하기 때문에

는 당신이 실제로 원하는 것은

trainingDayObject = [NSEntityDescription insertNewObjectForEntityForName:@"trainingDay" inManagedObjectContext:self.context]; 

같은 것입니다.

+0

'insertNewObjectForEntityForName'을 사용하면 다른 생성 된 객체에서 MOC를 저장하는 것 이외에 빈 객체를 생성하게됩니다. 예를 들어, 내 테이블보기에서 예상되는 Name1, Name 2 대신 Nil, Nil, Name 1, Name 2를 얻습니다. – Arel

+0

그런 다음 수행중인 작업에 대한 자세한 정보를 제공하는 다른 질문을하십시오. 예를 들어 위의 질문에서 코드 줄을 사용할 때 수행하려는 작업. 한 줄만 있으면 앱의 전반적인 구조를 나타내는 대답을 제공하는 것이 불가능합니다. 내가 한 일은 그 한 줄의 잘못된 점을 설명하는 것이 었습니다. –

+0

나는 그것이 더 간단한 문제라고 생각했고, 질문을 지나치게 복잡하게 만들고 싶지 않았다. 다음은 문맥에 대한 다른 질문입니다. http://stackoverflow.com/questions/20589938/saving-the-managedobjectcontext-for-a-specific-object – Arel