Xcode 4, 핵심 데이터 모델 버전-현재 버전 설정


183

Xcode 4에서 다음 기능을 수행하여 버전이 지정된 모델을 만든 후 사용할 모델을 설정하는 방법에 대해 혼란스러워합니다.

설계> 데이터 모델> 현재 버전 설정


15
다시 참조해야 할 때마다 투표 할 수 있기를 바랍니다.
erik

답변:


329
  1. 최상위 레벨 .xcdatamodelId 파일 (자식으로 여러 버전의 .xcdatamodel이있는 파일)을 클릭하십시오.
  2. 유틸리티 측면 창이 보이는지 확인하십시오 (창 오른쪽 상단의 세 번째 "보기"단추를 클릭하지 않은 경우).
  3. 유틸리티 측면 창에서 파일 관리자 (왼쪽 상단의 작은 종이 아이콘)를 선택하십시오.
  4. "버전이 지정된 코어 데이터 모델"이 그룹으로 표시되므로 "현재"드롭 다운을 새 버전으로 변경하십시오.

2
정말 고마워요! 또한 View> Utilities> File Inspector
Nate Potter

Xcode 3과 4 사이의 변경 사항에 여전히 익숙해졌습니다. 감사합니다!
Chris


15

Xcode 4에서 * .xcdatamodeld 파일을 선택했을 때 파일 관리자의 "버전이 지정된 코어 데이터 모델-현재"섹션에 하나의 데이터 모델 버전 만 표시되는 경우 또는 Xcode의 프로젝트 탐색기에서 xcdatamodeld 번들 외부에 표시되는 * .xcdatamodel 파일의 두 번째 버전이 있습니다 (아래 참조).

이 문제를 해결하려면

1) 프로젝트 탐색기에서 마우스 오른쪽 버튼을 클릭하고 "삭제"를 클릭하여 Xcode에서 * .xcdatamodeld 및 * .xcdatamodel 참조를 모두 제거하십시오.

2) Xcode에서 프롬프트가 표시되면 참조 만 제거를 클릭 하십시오. (매우 중요)를 .

3) 캐싱이 발생하는 경우 Xcode를 다시 시작하여 적절한 조치를 취하십시오.

4) * .xcdatamodel 파일이 모두 포함 된 단일 * .xcdatamodeld 파일을 다시 추가하십시오.

Xcode는 이제 관계를 인식하고 프로젝트 네비게이터에서 * .xcdatamodeld 파일을 확장하여 상위 xcdatamodeld 번들 아래에 * .xcdatamodel 파일을 모두 표시하고 현재 모델 옆에 녹색 확인 표시를 표시 할 수 있습니다. 또한 파일 관리자에서 하나의 버전 만 표시하는 대신 현재 버전의 데이터 모델을 선택할 수 있습니다.


따라서 머리가 긁히는 것을 끝내십시오.
Steve Madsen

실수로 부모 xcdatamodelid를 응용 프로그램 번들로 변경 했으며이 솔루션이 도움이되었습니다!
morph85

4

Xcode 4.2의 경우

  1. YourModel.xcdatamodeld를 클릭하십시오

  2. 측면 창이 보이도록

  3. "버전이 지정된 코어 데이터 모델"에서 "현재 드롭 다운 상자"를 선택하고 데이터 모델을 선택하십시오.

이제 녹색 체크 표시가 현재 데이터 모델로 이동되었습니다.


"오브젝트 라이브러리"에는 "버전 화 된 코어 데이터 모델"과 같은 것이 없습니다. Mac_Cain13의 첫 번째 대답은 정확하지만 Xcode의 .modeld 외부 모델에 이상한 버그가있는 것 같습니다.
StuFF mc

@ StuFFmc-Xcode의 프로젝트 탐색기에서 xcdatamodeld 번들 외부의 xcdatamodel 파일 문제를 해결하려면 아래 게시물을 확인하십시오.
앤드류

2

Xcode의 도움말에서 "현재 버전"을 검색하면 "관리 대상 모델의 현재 버전 설정"이라는 레시피가 생성됩니다.


1

조금 벗어난 주제이지만 모델의 첫 번째 새 버전을 만드는 방법을 알기 위해이 질문에 도달했다면 xcdatamodel 파일 >> 메뉴 "편집기">> 모델 버전 추가를 클릭하십시오.

모델의 버전 관리가 시작됩니다.



-1

CoraData에서 setter 메소드를 사용할 수도 있습니다 ...
그냥 다음과 같이하십시오 ...

당신에 CustomCoreDataManager.m :

#import "ObjectiveRecord.h"

다음과 같이 init 메소드를 호출하십시오.

- (instancetype)init {

    self = [super init];

    if (self) {           
        [[CoreDataManager sharedManager] setModelName:@"YourModelName"];
    }

    return self;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.