美文网首页Swift
Xcode 10 & swift 4.0

Xcode 10 & swift 4.0

作者: 谁动了我的芝麻糖 | 来源:发表于2018-09-19 15:36 被阅读597次

    升级了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了...

    相关文章

      网友评论

        本文标题:Xcode 10 & swift 4.0

        本文链接:https://www.haomeiwen.com/subject/ltlinftx.html