9

저는 CoreData에 정통한 사람입니다. 거의 어려움없이 몇 년 동안 사용해 왔습니다. 내 인생을 위해, 나는 이유를 알아낼 수 없다.insertNewObjectForEntityForName : inManagedObjectContext : NSNumber 버그를 반환합니까?

insertNewObjectForEntityForName:inManagedObjectContext: 

은 갑자기 NSNumber의 이상한 인스턴스를 반환하고있다. GDB는 반환 된 객체 NSManagedObject의 정확한 정의 서브 클래스이지만, 나는 NSManagedObject 자체에 대한 설명을 인쇄 할 갈 때, 나는 다음과 같은 오류 얻을 말한다 : 심지어 낯선 무엇

*** -[NSCFNumber objectID]: unrecognized selector sent to instance 0x3f26f50 

을, 나는 수 있어요 것입니다 setValue : forKey :를 사용하여 몇 가지 관계와 속성을 설정하고 모두 좋다. 나는 문제의 관계가되도록, 심지어 모델을 편집, 맥과 아이폰 모두를 다시 시작으로, 깨끗한에서 모든 대상을 모든 것을 시도했습니다

*** -[NSCFNumber entity]: unrecognized selector sent to instance 0x3f26f50 

: 나는 하나 개의 특정 관계를 설정하려고하면, 나는이 오류 to-one 대신 one-to-one을 사용합니다. 내가 무엇을해도 같은 문제가 나타납니다. 전에 이런 걸 본 사람 있어요?

+2

하시기 바랍니다과 충돌 할하는 것으로, 더 많은 코드 – Skie

+0

혹시이를 알아내는 결국나요 제공? – makdad

답변

0

objectID 및 엔터티 선택자는 NSCFNumber (또는 NSNumber)이 아닌 NSManagedObject에 있습니다. 엔티티 자체가 아니라 엔터티의 속성이어야하는 NSNumber에서 이러한 선택기 중 하나를 호출 할 것을 기대하지는 않습니다.

CoreData의 모든 항목은 NSManagedObject까지 확장해야하므로 NSCFNumber 개체는 개체가 아닙니다.

1

나는 똑같은 문제에 부딪 혔고 하루 종일 머리카락을 뽑은 후에 내 문제를 해결했습니다.

이 문제는 손상된 속성/관계와 관련이 있으며 NSCFNumber는 실제로 해당 속성/관계에 대한 objectID를 찾고 있다고 생각합니다. 필자의 경우, valueForKey :를 사용하여 모든 속성/관계를 찾을 수 있었지만 "파일"이라는 관계가 손상된 것처럼 보였습니다.

마지막으로 부울 "isFile"메서드를 포함하도록 NSObject를 확장했다는 것을 깨달았습니다. 여하튼 CoreData를 방해하여 손상된 개체를 반환하거나 개체가 제대로 처리되지 못하게했습니다. . 내 생각 엔 CoreData는 "isXXX"메서드를 동적으로 만들어야한다는 것입니다.

isFile 메서드를 제거하거나 내 속성의 이름을 변경하여 문제를 해결할 수있었습니다.

14

나는 아주 똑같은 문제가있다 : "isDatabase"(BOOL 반환)라는 메서드를 "database"라는 관계가있는 데이터베이스 엔터티의 부모 엔터티에 추가했다. "isDatabase"의 이름을 "isOfTypeDatabase"로 변경하면 문제가 해결됩니다. 부모 엔티티도 계속 살펴보세요!

+0

방금 ​​** 시간 **의 좌절감과 인터넷 검색 결과를 저장했습니다. 내가이 대답을 수천 번이나 올릴 수 있다면 나는 그렇게 할 것이다. 감사합니다! – Russ

+0

OMG! 같은 문제가 있어도 카테고리 에서조차 이 (가) 사용할 수 없습니다! 내 방법을 뭔가 다른 것으로 변경했습니다. 고마워요. D! – KBog

2

클래스에 정의 된 관계 이름과 충돌하는 NSManagedObject 하위 클래스의 속성을 정의했습니다.

여기 여기 MyManagedObjectSubclass을 위해 엑스 코드에 의해 생성 된 코드의 내 MyManagedObjectSubclass+Custom.h

@property (readonly, nonatomic) BOOL isSeason;

의 코드입니다.시간

@property (nonatomic, retain) SomeOtherEntityToOneRelationship *season;

isSeason이 KVC에 의해, 시즌 이름

관련 문제