前言
今天把公司项目的swift代码升级到Swift3,遇到了不少坑
现在总算能跑起来了..还有很多坑要踩…
这是改之前的惨状:
发现一条写一条,不定时更新
正题
选了Later之后还想调用系统的自动升级[Edit > Convert > To Current Swift Syntax…]
之前一个控件layoutIfNeed 会带动它所约束的控件一起layout,现在只会单独计算,想达到之前的效果只能整个父级控件调用layoutIfNeed方法了
swift取oc得NSDate回自动变成Data类型,一些操作NSDate的第三方库(如:DateTools)会崩溃
block的形参要加 “ _ “ 方法的第一个参数前也要加形参名
flatmap和map会返回一个非数组的类型,需要重新用一个返回[T]的方法重写一遍..语法都没有变,改了就好了
控制台会输出一大堆网络日志,需要再Run里加一个OS_ACTIVITY_MODE = disable stackoverflow:http://stackoverflow.com/questions/37800790/hide-strange-unwanted-xcode-8-logs/39461256#39461256
Swift调用OC对象属性都自带Optional了,使用的时候要拆包
升级Xcode之后想支持以前的插件可以在
~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
路径下添加你现在的Xcode的UUID,查看你Xcode的UUID/Applications/Xcode.app/Contents
- 上面方法还不行的看这个http://vongloo.me/2016/09/10/Make-Your-Xcode8-Great-Again/?utm_source=tuicool&utm_medium=referral
- Xcode8打包的时候需要在Plist里为应用添加相应的权限配置(使用Xcode8上传成功后,商店里构建版本却没 http://gold.xitu.io/entry/57e117cca22b9d00612661bd/detail)
参考文章
- 如何向 Swift 3.0 进行数据迁移:http://gold.xitu.io/entry/57a3044e2e958a0066850a48
- 兼容iOS 10 资料整理笔记:http://www.jianshu.com/p/0cc7aad638d9