Xcode 10 & swift 4.0

升级了Xcode,又要吐血了,唉。。。

代码又出来好多编译错误,Objc的工程还好一点,swift就很惨。

1,Objc工程/Swift工程,编译时会出:

:-1: Multiple commands produce '/Users/xxx/Library/Developer/Xcode/DerivedData/Abc-eevxfmncsazylmbfntnfpktbmfgw/Build/Products/Debug-iphoneos/abc.app/Info.plist':
1) Target 'abc' (project 'Abc') has copy command from '/Users/xxx/Desktop/Abc/Info.plist' to '/Users/xxx/Library/Developer/Xcode/DerivedData/Abc-eevxfmncsazylmbfntnfpktbmfgw/Build/Products/Debug-iphoneos/abc.app/Info.plist'
2) Target 'abc' (project 'Abc') has process command with output '/Users/xxx/Library/Developer/Xcode/DerivedData/Abc-eevxfmncsazylmbfntnfpktbmfgw/Build/Products/Debug-iphoneos/abc.app/Info.plist'

为什么呢?google了一圈之后,大家都说是因为重复拷贝了Info.plist的原因。有两个解决方法:
1)修改编译方式:
File->Workspace Settings->Build System,改为Legacy Build System。默认为New.
2)删除拷贝了多次的plist文件:
Target->Build Phases -> Copy Bundle Resources 找到Info.plist,删掉
也有可能需要删除Copy Pods Resources中的Info.plist(我没遇到这个)

注意:上面两个方法任意一个都可以成功编译Xcode 9的工程。

在不"Clean Build Folder"的情况下,再把Info.plist加入工程Resources也不会有什么问题,这只是打ipa包的时候需要打包进入的文件列表而已。

2,Xcode 10 里没有SVN了... 只有Git
这下我可惨了,只能用svnX了,好在有GUI,不然只在命令行处理就太麻烦了

3,提示了好多:

Showing Recent Messages
/Users/xxx/Desktop/ipp/Pods/ObjectMapper/Sources/EnumOperators.swift:35:13: Invalid redeclaration of '<-'

Showing Recent Messages
/Users/xxx/Desktop/ipp/Pods/ObjectMapper/Sources/FromJSON.swift:44:13: Invalid redeclaration of 'optionalBasicType(_:object:)'

有可能是因为方法命名的问题。
我的问题比较蠢,因为在使用Cocoapods加入ObjectMapper时,没有指定版本,如果指定3.3版本就可以解决上述问题:

pod 'ObjectMapper', '~>3.3' 

4,如果选择了swift 4.2,会提示:AVAudioSession.setCategory 问题
提示:Swift不支持setCategory,但是如果使用4.2的setCategory,又会无法兼容iOS 10.0以下系统。google上有提示需要用Objc来写这段代码,因为Objc不会提示『不支持』。我没尝试解决,索性退回到4.0了...

5,补充:
今天发现一个很久不碰的工程编辑不过了(Xcode 10.3)。
开始提示pod文件中限定的swift太低(3.2),需要是4.0,4.2,5.0,于是改成4.2.
然后编译出错:Invalid redeclaration of 'replaceSubrange(_:with:)' 和 Invalid redeclaration of ‘removeSubrange’.
升级RealmSwift得到解决:

#pod update RealmSwift --verbose --no-repo-update 
Installing Realm 3.7.6 (was 3.0.1)

你可能感兴趣的:(Xcode 10 & swift 4.0)