2016-11-02 8 views
0

최근에 CoreData와 그 기능을 시험해보고 싶었 기 때문에 간단한 튜토리얼을 발견했으며이를 따라 엔티티와 관계가있는 .xcdatamodeld 파일을 만들었습니다. 내가 지금하고 싶었다 무엇Swift CoreData NSManagedObject 하위 클래스

내가 내 모델 파일을 열어이를 위해

(엑스 코드 버전 8.1 (8B62)와 엑스 코드 버전 8.2 베타 (8C23)에 시도) 클래스 로를 설정하는 것입니다, 클릭 편집기 ->NSManagedObject 하위 클래스을 만듭니다. 이 작업을 수행하고 두 엔티티를 선택하면 네 개의 클래스, 두 개의 NSManagedObject 클래스가 생성되며 각각에 대해 하나의 확장이 생성됩니다.

그 네 개의 파일을 추가하거나 오히려 생성 한 후, 엑스 코드 프로젝트를 컴파일하고 다음과 같은 오류 끈다되지 않습니다

Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1

를 때때로 그것은 또한 말한다 : Invalid redeclaration of [Managed Object Name]

어떤 통찰력 것 나는 모델을 사용하지 않고 직접 수업을 만들어야합니까? 또는 CoreData가 Objc에서 작동합니까? 그러면 그걸로 전환 할 것입니다 ...

답변

3

Xcode 8은 What's New in Core Data in macOS 10.12, iOS 10.0, tvOS 10.0, and watchOS 3.0 문서에서 읽을 수있는 자동 코어 데이터 하위 클래스 생성에 대한 지원을 추가합니다. 새 프로젝트에서 자동 코드 생성 기능이 켜져 있으므로 NSManagedObject 서브 클래스를 수동으로 만들 때 중복을 작성하여 컴파일러 오류가 발생합니다.

이 문제를 해결하는 방법에는 두 가지가 있습니다. 먼저, 수동으로 생성 한 NSManagedObject 서브 클래스를 제거 할 수 있습니다. 두 번째로 Code Model 메뉴에서 Manual/None을 선택하여 Data Model inspector에서 데이터 모델에 대한 자동 코드 생성을 해제 할 수 있습니다. 튜토리얼을 따르고 있다면 자습서가 Apple이 자동 코어 데이터 하위 클래스 생성을 추가하기 전에 작성되었을 가능성이 높기 때문에 두 번째 옵션을 권장합니다.

enter image description here

+0

오, 엑스 코드가 자동으로 모델에서 정의한 내용에 따라 숨겨진 스위프트 클래스를 생성 그래서? 그럼에도 코드로 사용할 수는 있지만 나에게 보여주지는 않습니까? – xCoder

+0

질문에 대한 나의 가장 좋은 추측은 예이지만 자동 하위 클래스 생성을 사용하지 않았습니다. 내 대답의 마지막 부분에서 말했듯이 자습서를 따르고 있다면 자동 하위 클래스 생성을 해제해야합니다. –

관련 문제