4

OK, 몇 시간 후부터 검색 한 후에 커뮤니티 도움을 요청할 때입니다.CoreData : 경고 : 'Readings'엔터티에 'WEEReadings'라는 클래스를로드 할 수 없습니다. 클래스를 찾을 수 없습니다. 대신 기본 NSManagedObject를 사용하십시오.

나는 정적 라이브러리를 가지고 있으며이 awesome을 사용하여 script 나는 범용 정적 라이브러리를 포함하는 정적 프레임 워크를 생성하고 ReadingsCoreDataModel.mom을 포함하는 ReadingsCoreDataModel.momd를 포함한 번들을 만듭니다. 모든 좋은, 내가 내 클라이언트 IOS 응용 프로그램에 제공, 모든 제대로 빌드 및 내 프레임 워크에 꼬임 및 번들을 사용하여 응용 프로그램을 시작, 내 정적 라이브러리에있는 내 정적 라이브러리에있는 Worker, 검사 된, NSManagedObjectModel 명명 된 사용하는 단일 톤 WEATHataStore 클래스가 있습니다. nil 및 올바르게로드 될 것으로 보이는 경우 NSPersistentStoreCoordinator는 nil이 아니며 NSManagedObjectContext는 nil이 아닙니다.

WEEDataStore에는 정적 라이브러리의 Worker 클래스에서 호출하는 save 메서드가 있습니다.

내 ReadingsCoreDataModel.momd에서 이름 읽기와 클래스 WEEReadings로 엔티티를 만들었습니다.

나는

WEEReadings* readingsEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Readings" inManagedObjectContext:[[WEEDataStore sharedInstance] managedContext]]; 
[readingsEntity appendWithReadingsModel:self.readingsModel]; 
[[WEEDataStore sharedInstance] save]; 

결과는 다음과 같은 오류

CoreData: warning: Unable to load class named 'WEEReadings' for entity 'Readings'. Class not found, using default NSManagedObject instead. 
2014-12-13 20:11:30.080 TestClient[6854:2487108] -[NSManagedObject appendWithReadingsModel:]: unrecognized selector sent to instance 0x1700ccda0 
2014-12-13 20:11:30.084 TestClient[6854:2487108] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject appendWithReadingsModel:]: unrecognized selector sent to instance 0x1700ccda0' 

을 얻을 수있는 노동자 클래스에 다음과 같이 I가 거의 모든 유사한 오류, 스위프트, 또는 오타 대부분의 문제 해결을 읽어 모델과 관련된 오류, 응용 프로그램 이름과 동일한 모델 이름을 제안하는 기타,이 작업을 수행 할 수 있다고 생각하지 않거나 오류와 관련이 있습니다.

내 정적 라이브러리에있는 모든 내 헤더는 공개로 추가 된 클라이언트에 노출 된 헤더를 제외한 프로젝트입니다. 그것들을 공개적으로 모두 추가하려했지만 아무런 차이가 없었습니다.

모든 핵심 데이터 작업은 내부적입니다.

코어 데이터 모델이 제대로로드 된 것처럼 보이지만 프레임 워크에 포함 된 정적 라이브러리에 확실히 포함 된 클래스를 찾을 수 없습니다.

미친 집에 등록하기 전에 아이디어가 있습니까?

+1

링커가 라이브러리의 모든 클래스를로드하도록 강제하려면 프로젝트에 -'ObjC'linker 플래그를 추가하십시오. 'nm mylib.a'를 실행하고 클래스가 바이너리로 존재하는지 확인하십시오. 이 두 가지 모두 문제를 해결하지 못하면 우리는 미친 집에 갈 수 있습니다. – Andy

+0

클래스와 엔티티의 이름이 같은지 확인 했습니까? –

+0

클라이언트 테스트 응용 프로그램에 -ObjC 플래그를 추가하는 것을 잊었습니다. 아델, 이건 중요하지 않아. @ 앤디가 아래 질문에 답해 주므로 올바른 것으로 표시 할 수 있습니다! 감사. –

답변

3

-ObjC 링커 플래그를 프로젝트에 추가하여 링커에서 라이브러리의 모든 클래스를로드하도록합니다.

관련 문제