錯(cuò)誤描述
今天在Xcode 8下使用Core Data時(shí),編譯時(shí)出現(xiàn)以下錯(cuò)誤:
<unknown>:0: error: filename "Friend+CoreDataClass.swift" used twice: '/Users/.../Documents/Demo/Friend/Friend/Friend+CoreDataClass.swift' and '/Users/.../Library/Developer/Xcode/DerivedData/Friend-adfqrgytnrhhxnavbipcabnyztke/Build/Intermediates/Friend.build/Debug-iphonesimulator/Friend.build/DerivedSources/CoreDataGenerated/Friend/Friend+CoreDataClass.swift'
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
<unknown>:0: error: filename "Friend+CoreDataProperties.swift" used twice: '/Users/.../Documents/Demo/Friend/Friend/Friend+CoreDataProperties.swift' and '/Users/.../Library/Developer/Xcode/DerivedData/Friend-adfqrgytnrhhxnavbipcabnyztke/Build/Intermediates/Friend.build/Debug-iphonesimulator/Friend.build/DerivedSources/CoreDataGenerated/Friend/Friend+CoreDataProperties.swift'
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
仔細(xì)看下上面的報(bào)錯(cuò)醋安,發(fā)現(xiàn)是文件名沖突。Friend+CoreDataClass.swift 和 Friend+CoreDataProperties.swift 同時(shí)出現(xiàn)在兩個(gè)路徑下:
/Users/.../Documents/Demo/Friend/Friend/
/Users/.../Library/Developer/Xcode/DerivedData/Friend-adfqrgytnrhhxnavbipcabnyztke/Build/Intermediates/Friend.build/Debug-iphonesimulator/Friend.build/DerivedSources/CoreDataGenerated/Friend/
產(chǎn)生原因
Xcode 8中實(shí)體新添了一個(gè)Codegen選項(xiàng),而其默認(rèn)值是'Class Definition'审胚,表示自動(dòng)為實(shí)體生成對(duì)應(yīng)類文件(上面較長(zhǎng)路徑下的文件)。
而我又用使用Editor->Create NSManagedObject Subclass手動(dòng)為實(shí)體生成了類文件(上面較短路徑下的文件)礼旅。所以導(dǎo)致了文件重名膳叨。
解決方案
方案一:刪掉手動(dòng)生成的類文件,直接使用自動(dòng)生成的痘系。
方案二:如果不想用系統(tǒng)自動(dòng)生成的菲嘴,我們可以將Codegen選項(xiàng)改為'Manual/None'。表示手動(dòng)生成。
注意龄坪,使用方案二需要?jiǎng)h除已經(jīng)自動(dòng)生成的文件(上面較長(zhǎng)路徑下的文件)昭雌。如果還是報(bào)錯(cuò),使用Product -> Clean清理下試試悉默。