SwiftのXcode 8.1でNSManagedObjectを生成すると、このエラーが発生します。
:0:エラー:ファイル名「DemoOne + CoreDataClass.Swift」が2回使用されています: '/ Users/Swasidhant/Desktop/demo again/DemoOne + CoreDataClass.Swift'および '/ Users/Swasidhant/Library/Developer/Xcode/DerivedData/demo_again- hiinrbwwbmyfbrbctsfdzvudkkuy/Build/Intermediates/demo again.build/Debug-iphonesimulator/demo again.build/DerivedSources/CoreDataGenerated/Model/DemoOne+CoreDataClass.Swift ':0:注:ファイル名は、同じ名前のプライベート宣言を区別するために使用されます:0 :エラー:ファイル名 "DemoOne + CoreDataProperties.Swift"が2回使用されました: '/ Users/Swasidhant/Desktop/demo again/DemoOne + CoreDataProperties.Swift'および '/ Users/Swasidhant/Library/Developer/Xcode/DerivedData/demo_again-hiinrbwwbmyfbrbctsfdzvudkvyk Build/Intermediates/demo again.build/Debug-iphonesimulator/demo again.build/DerivedSources/CoreDataGenerated/Model/DemoOne+CoreDataProperties.Swift ':0:注:ファイル名は、同じ名前のプライベート宣言を区別するために使用されますCommand/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefaul t.xctoolchain/usr/bin/swiftcが終了コード1で失敗しました
これを検索して、ファイルがプロジェクトに2回存在する可能性があるという回答を得ましたが、これは私の場合ではありません。私が出くわした別の解決策は、ビルド段階からファイルを削除し、再度追加することでした。それもうまくいきませんでした。ビルド設定の構成の間違いですか?または、他の何か?
Xcode 8.1で作成され、この問題を示しているデモプロジェクトとのリンクを次に示します。- https://www.dropbox.com/s/xwyzhshktb2hqe7/demo2.zip?dl=0
この問題は、Xcode自動サブクラス生成機能が原因で発生しています。
Xcodeの自動サブクラス生成
Xcodeは、モデリングツールでNSManagedObjectサブクラスの自動生成をサポートするようになりました。エンティティインスペクターで:
- Manual/Noneはデフォルトであり、以前の動作です。この場合、独自のサブクラスを実装するか、NSManagedObjectを使用する必要があります。
- Category/Extensionは、ClassName + CoreDataGeneratedPropertiesのような名前のファイルにクラス拡張を生成します。メインクラスを宣言/実装する必要があります(Obj-Cの場合、ヘッダーを介して拡張機能はClassName.hという名前をインポートできます)。
- クラス定義は、ClassName + CoreDataClassのような名前のサブクラスファイルと、カテゴリ/拡張用に生成されたファイルを生成します。
生成されたファイルはDerivedDataに配置され、モデルが保存された後の最初のビルドで再構築されます。また、Xcodeによってインデックスが作成されるため、コマンドキーを押しながら参照をクリックし、ファイル名ですばやく開くことができます。
したがって、問題を修正するには、以下に示すようにCodegen
フィールド値をManual/None
に設定する必要があります。
これは私がこの問題を修正するためにしたことです。
誰かを助けるかもしれません、プロジェクトに移動してソースをコンパイルし、余分な参照がある場合は削除します。
コードデータモデルを選択し、エンティティを選択して、「Codegen」の値をManual/Noneに変更します。
それが動作します。
この問題は、私のプロジェクトの「Extensions.Swift」という名前の2番目のファイルが原因でした。
重複した「Extensions.Swift」を削除した後、エラーは解決しました。エラーメッセージから、どのファイルが複製されているかがわかります。
私の場合、Data Model(例:MyCoreData.xcdatamodeld)がEditor-> Create NSManagedObject Subclass ...の下に2回リストされていました。
私がしたこと:
エンティティをコピーして名前を変更したとき、私に起こりました。クラスの名前変更に失敗したため、手動で変更してください。