升级到XCode8,Swift3.0后,解决各种错误。
1:**Optional unwrap的问题**
此问题最严重,导致上线出现bug。
Swift3中,尽量避免隐式声明类型,或“\(xx)”来获取。
let host: String! = "https://host.io/"
let urlString = "\(host)oauth/access_token"
Optional("https://host.io/")oauth/access_token
2:使用CocoaPods时,报以下错误
no such module 'xxx'....
解决办法:
pod 'RealmSwift', :git => 'https://github.com/realm/realm-cocoa.git', :tag => 'v1.1.0',:submodules =>true
3:使用CocoaPods时,第三方release还未升级到Swift3.0时
解决办法:
一般使用率比较高的第三方,其在分支上都已支持Swift3.0,只是还未release。
pod 'XCGLogger', :git => 'https://github.com/DaveWoodCom/XCGLogger.git',:branch =>'swift_3.0'
另外在最后加上以下
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['SWIFT_VERSION'] = '3.0' #swift 2.3or '2.3'
end
end
end
4:XCode编译的过程中,停止不动了
以前遇到此情况,也未报错,很奇怪。
实在没有办法,通过command line编译,定位到卡在哪个文件,处理后就OK了。
(默认是未安装,通过以下命令,先安装)
MacBook-Pro:1.4.7 chengfei.heng$xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
MacBook-Pro:1.4.7 chengfei.heng$xcodebuild -workspace 'xxx.xcworkspace' -scheme 'xxx'
5:AnyObject和Any
以前的理解换成了Any,参考:http://kuczborski.com/2014/07/29/any-vs-anyobject/
6:需要声明类型,如果未声明,则出现以下错误
unrecognized selector sent to instance 0x618000450a10
7:快捷键失效,比如注释Command + /
终端输入以下命令,重启系统,不是XCode
$sudo /usr/libexec/xpccachectl
8:Alamofire请求方式修改
未完待续。。。