记录一个荒谬的错误

2018-10-08  本文已影响16人  UninhibitedSoul

tags: swift 4.2, 日常爬坑

发现问题

最近在做类似手机来电响铃且震动功能。在一个网上找到一份封装播放铃声的代码。(这位码农这么小个功能还做了framework 和 pod. 获得了600stars)

Demo工程在开发时使用的是swift 4.0,而如今我使用的Xcode 10.0, swift 4.2,。
问题就出在这里,我这个demo工程编译选择的是以前的swift 4.0,然后我个人习惯查看官方文档 (快捷键:command + shift + 0)的版本是swift 4.2的。这就出现了

 var category: AVAudioSession.Category = .ambient 
 ERROR: Type 'AVAudioSession.Category' (aka 'NSString') has no member 'ambient'
 

定位原因

最后发现是demo工程的swift版本没有选择到最新swift 4.2,导致语法无法识别。

解决路径

targets -> [your project] -> build settings -> swift language version -> [select your swift version]

浪费不少时间解决问题

-> 怀疑自己语法敲错了
-> 怀疑是不是iOS系统版本,选到只支持最新iOS 12还是没有解决。
-> 再次查阅 apple developer document
-> google
-> stack overflow
-> copy 代码到其他工程 尝试
哎?!!! 其他工程中代码并没有报错
然后Xcode 工程中build settings 寻找可疑相关设置项
找到 swift language version
Bingo!

上一篇下一篇

猜你喜欢

热点阅读