2011-01-29 6 views
0

가이드를 사용하여 this 가이드 나는 하나의 애플 리케이션의 Mac OS X 및 iOS 버전간에 공유 할 수있는 정적 라이브러리 (AppCore)를 만들었습니다. 이 정적 라이브러리는 핵심 데이터를 사용하며, 다른 구현간에 모델 부분과 스키마 버전을 공유하는 것이 핵심입니다.NSArrayController 및 공유, 정적, 코어 데이터 기반 라이브러리를 참조하십시오

나는이 AppCore에 의존하는 NSPersistentDocument 기반 프로젝트를 만들었습니다. 이 프로젝트에서는 .xcdatamodel 파일에 대한 참조를 추가했습니다. 그런 다음 보조/제거 버튼이있는 간단한 테이블보기를 만들어 지원되는 "새 핵심 데이터 엔터티"항목을 사용하여 한 엔터티 유형의 배열을 편집했습니다. 이로 인해 NSArrayController의 인스턴스와 추가/제거 동작에 필요한 바인딩이 만들어졌습니다.

핵심 데이터 엔티티 (NSManagedObject)에 기본 클래스를 사용하면 모든 것이 정상적으로 작동하고 +/- 버튼을 사용하여 새 행을 추가 할 수 있습니다. 나는 사용자 정의 하나에 엔티티 구현 클래스를 변경할 때, 나는 오류

Failed to create new object 

이것은 NSArrayController에서 온 것하고 필요한 개체를 인스턴스화 할 수없는 것 같다납니다. 그러나 나는하여 NSPersistentDocument 하위 클래스에서 하나를 만들 수 있습니다

[NSEntityDescription insertNewObjectForEntityForName:@"SomeEntity" inManagedObjectContext:[self managedObjectContext]] 

은 무엇 저를 혼동하는 이유 NSArrayController의 인스턴스가 아닌 수있다. 내가 올바르게 이해한다면, 배열 컨트롤러는 클래스가 아닌 엔티티를 생성하도록 지시 받았고 엔티티가 NSEntityDescription 클래스의 도움으로 생성되었다고 추측 할 수 있습니다. 나는 어레이 컨트롤러의 add: 버전을 구현할 수 있었지만, 여기에 뭔가 근본적으로 잘못된 것일 수도 있습니다. 나는 init:을 건드리지 않았으며 사용자 정의 엔티티 클래스 구현은 속성을 직접 액세스하기위한 편의를위한 것입니다.

AppCore에서 기본 SDK를 변경하려고했지만 효과가 없습니다. 현재 iOS 버전을 사용하고 있지만 어떻게해야하는지 잘 모르겠습니다. 이것은 또 다른 질문이지만, 관련이없는 경우 여기에서 별도의 질문으로 질문 할 수 있습니다.

요약하면 왜 NSArrayController이 엔티티의 인스턴스를 만들 수 없습니까?

미리 감사드립니다.

업데이트

내가 참고로 종속 프로젝트에 AppCore에서 SomeEntity 클래스를 추가하는 경우이 작동합니다. 이것은 AppCore에 대한 수정 사항이 dependatnt 프로젝트에도 전파되어야하므로 가장 유용한 방법은 아닙니다.

답변

0

빙고. 종속 프로젝트의 "다른 링커 플래그"에 대해 "-ObjC"플래그를 놓쳤습니다. 이제는 모든 것이 매력처럼 작동합니다.

관련 문제