2011-11-09 3 views
0

핵심 데이터 프로젝트를위한 프레임 워크를 만들었습니다. 특정 피드를 핵심 데이터로 구문 분석하고 저장합니다. 이 프레임 워크를 패키지화하여이 피드를 다시 구문 분석 할 때마다 프레임 워크를 다른 프로젝트로 드래그 할 수 있습니다. 그러나 프레임 워크를 다른 프로젝트로 드래그하려고하면 새 프로젝트에서 코어 데이터 모델을 찾을 수 없습니다 (프레임 워크에 포함 시켰음에도 불구하고).코어 데이터 모델을 프레임 워크로 어떻게 가져 옵니까?

코어 데이터 모델을 프레임 워크에 포함시킨 다음 Core Data Model 파일 (DataModel.xcdatamodeld 및 DataModel.xcdatamodel이라는 파일이 있음)을 새 프로젝트에 드래그하면 프로젝트에서 핵심 데이터 모델을 만들고 예상대로 데이터를 파싱하고 저장합니다. 프레임 워크에 포함해야하는 두 가지 데이터 모델과 새로운 프로젝트로 드래그해야하는 두 가지 모델을 설명하기 위해 첨부 된 그림이 몇 가지 있습니다.

누구나이 작동 원리를 설명 할 수 있습니까? 그것은 맞지 않는 것 같아요 데이터 모델의 두 복사본이 있어야합니다, 하나는 프레임 워크에 있고 다른 하나는 프레임 워크가 작동하기위한 프로젝트입니다 ... 어쨌든 저는 핵심 데이터 전체를 패키징하고 파싱 할 수 있습니까 데이터 모델로 프로젝트를 만들면 다른 프로젝트로 드래그 할 수 있습니까?

답변

1

난 당신이 모델의 핵심 데이터 스택의 인스턴스를 사용하는 코드의 조각을 게시하도록 요청할 수 있습니다

감사합니다 : 즉 아래에 나열된 모든 파일을 포함 할 것인가? 코드에서 주 번들을 사용하여 모델 리소스를 얻는 경우 (많은 간단한 핵심 데이터 예제가이를 수행함) 모델 리소스가 프레임 워크 (사용자의 경우 기본 번들이 아님) 내에 있기 때문에 코드가 작동하지 않습니다. 모델을 초기화하려면 다음과 같이 사용해야합니다.

+ (NSManagedObjectModel*)createModelForClass:(Class)modelClass 
{ 
    NSManagedObjectModel *model = 
    [NSManagedObjectModel mergedModelFromBundles: 
    [NSArray arrayWithObject: [NSBundle bundleForClass: modelClass]]]; 
    NSAssert(model != nil, @"Unable to initialize a data model");  
    return model; 
} 

프레임 워크 내에서 정의 된 모든 클래스의 클래스를 전달합니다. 일반적으로 프레임 워크 내에서 정의 된 모델의 외관/우산 역할을하는 클래스를 만들고 위 메서드를 호출 할 때이 클래스를 사용합니다.

관련 문제