Xcode8 使用CoreData生成物件檔案出現編譯錯誤解決方案
問題描述:
duplicate symbol _OBJC_CLASS__Person in:/Users/suruikeji/Library/Developer/Xcode/DerivedData/CoreData_Demo-gwbqmxvuoisdjsekqjhmlknqktgk/Build/Intermediates/CoreData_Demo.build/Debug-錯誤資訊:iphonesimulator/CoreData_Demo.build/Objects-normal/x86_64/Person+CoreDataClass.o</p><p>duplicate symbol _OBJC_METACLASS_
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
根據資訊說Person+CoreDataClass.o檔案重複了。
這是因為在Xcode8.0中包含了一個自動生成NSManagedObject的機制,如果你開啟該機制則會在project(Derived Data目錄中)實際生成的DerivedSources資料夾中出現同名的原始碼檔案。
按一下方法解決:
1.開啟在model file的inspector,選擇Tools Version為 Xcode 7.3
2.或者你可以根據不同的entity去分別選擇啟用還是關閉自動生成機制;選擇model file中特定的entity,開啟其Data Model Inspector視窗,將其中的Codegen選項設定為Manual/None: