2016-11-29 7 views
5

코어 데이터를 사용하여 데모 프로젝트를 만들었습니다.NSManagedObject 서브 클래스에서 중복 된 심볼 오류

데이터 모델에 엔터티 Userinfo을 만들었습니다. 이제이 엔티티의 하위 클래스 인 NSManagedObject을 만들었습니다.

Xcode는이 4 가지 클래스를 자동 생성했습니다. 내가 프로젝트를 빌드 할 때

enter image description here

지금은이 오류가 발생합니다 : 나는 모든 짓을

enter image description here

내가 도움이 duplicacy하지만 아무것도의 오류를 제거하는 것을 알고있다.

나는 Xcode 버그라고 생각합니다. 도와주세요.

+0

여기 나를 위해 짧고 쉬운 해결책이 있습니다. (나를) (https://stackoverflow.com/a/14449080/8551309) –

+0

[Here is] (https://stackoverflow.com/a/14449080/8551309) 나를위한 더 쉽고 쉬운 해결책. –

답변

9

Xcode에서 이미 생성 된 파일을 생성 중이므로 중복 선언이 나타납니다. Xcode 8의 새로운 기능인이 기능에 대한 자세한 내용은 this WWDC video에서 확인할 수 있습니다.

두 가지 가능한 해결 :

1) 존재하는 경우 엑스 코드, 당신의 프로젝트에서 생성 된 모든 NSManagedObject 서브 클래스를 삭제 ManagedObject 서브 클래스 (권장, 현대적인 접근)

  • 를 생성합니다.
  • Module

    ( this answer를 참조 애플 버그를 해결) (밝은 회색에서 "글로벌 네임 스페이스") 비어 있는지 확인 모든 엔티티에 대한 귀하의 .xcdatamodelClass Definition- Codegen 설정
  • 깨끗한 프로젝트
  • Clean DerivedData folder (옵션, 저장면에 있음)
  • ,
  • 빌드

참고 :

프로젝트에 자동으로 생성 된 파일을 추가하지 마십시오. 심지어 프로젝트에서 생성 된 파일이 보이지 않는다면, Xcode는 그것에 대한 참조를 가지고 있으므로 확장 등을 작성할 수 있습니다. 예 :

extension MyEntity { 
    func doSomething() { 
     // 
    } 
} 

또한 Xcode에서 생성 된 파일을 명령 + 클릭 할 수 있습니다.

2) 트리거 서브 클래스 생성 수동 (다소 편집증 만 존재하는 경우

  • 이 프로젝트에서 생성 된 모든 NSManagedObject 서브 클래스를 삭제) 새로운 엑스 코드 기능을 무시하고, 접근 방식을 총알 증명한다.
  • 이 확인 ("편집기"메뉴에서) 수동 NSManagedObject 서브 클래스를 생성
  • 청소 모든 엔티티 프로젝트에 대한 귀하의 .xcdatamodel
  • Clean DerivedData folder
  • 다시 시작 엑스 코드
  • Manual/NoneCodegen을 설정해야합니다 해당 파일이 추가됩니다 프로젝트에
  • 빌드
+0

생성 된 파일은 어디에 있습니까? 왜냐하면 나는 그 수업을 내 목적으로 필요로하기 때문이다. – iPeter

+1

파생 데이터 있음. 프로젝트에 추가하지 마십시오. 대답을 따르면, Xcode는 자동으로이 참조를 가지고 있습니다. 확장 기능을 작성할 수도 있습니다. 문제가 있으면 문제를 설명하십시오. 나는 도우려고 노력할 것이다. – shallowThought

+0

정말 고마워요. :) – iPeter