iOS开发(一)之OC过渡到Swift开发

“我最大的动力?”时刻挑战自己。我把生活视为用不毕业的大学,每天我求知若渴。 - 理查德 布兰森

今天打开简书一看,发现自己写的文章都是停留在一个月前,上一个月我主要是在做公司艺学教师版的国际版本的app。这也没办法啊,项目太紧张了,累得要死,每天工作到晚上十点。一方面是时间紧张,另一方面是我想用swift重写整个项目,既可以检验下自己之前学习swift的效果,又通过项目真正提升自己swift编程能力。毕竟swift是趋势,下图是2016年4月TIOBE编程语言排行榜,足以说明学习swift的重要性,我们得紧跟着时代的的步伐。尽管工作辛苦,但是和大家分享我的学习之路,我是非常的happy的。我今天分享的主要是使用oc和swift混合编程中需要注意的细节。记录自己的学习路线,更重要的是让后学者可以少走很多坑!
rating.png

总之,我使用swift写程序的感觉就是,一个字:爽;两个字:很爽;三个字:非常爽。写的代码程序是非常的简洁,也非常适合一些初学者学习,入门比OC低太多了。

注意点一:使用cocoapods管理第三方库,请添加use_frameworks!use_frameworks!use_frameworks!重要的事情说三遍

在 Swift 项目中,cocoapod 仅支持以 Framework 方式添加框架,因此需要在 Podfile 中添加 use_frameworks!下面是我的Podfile文件,最后一个是swift的网络请求框架。

1
2
3
4
5
6
7
8
9
10
use_frameworks!
pod 'AFNetworking'
pod 'SDWebImage'
pod 'SVProgressHUD'
pod 'MJRefresh'
pod 'MJExtension'
pod 'KLCPopup'
pod 'UPYUN', '~> 1.0.0'
pod 'HyphenateFullSDK', '~> 3.1.1'
pod 'Alamofire', '~> 3.3.1'

如果你的Podfile文件里面没有写 use_frameworks!在pod update时候将会出现下面的错误:
error.png
在使用的时候你得在每个swift类中import 相应的第三方库就可以使用了,这也是其麻烦之处;比如我的项目中很多页面都需要使用SVProgressHUD 显示一些信息,那么我就必须在这些类中都写这句代码引入这个库

import SVProgressHUD

按理来说,我在桥接文件中包含过一次就应该好了,但是我却一直不成功,希望解决这个问题的人,相互交流下!

注意点二:swift调用OC代码

建立一个桥接文件,有两种方法:

方法一:新建一个oc的类,xcode会自动提示你建立一个桥接文件,然后将新建的oc类给删除就可以了,然后将需要在swift中调用的oc类的类名包含进来即可;

bridgingheader.png
Bridging-Header.png

方法二:自己新建一个桥接头文件,File > New > File > (iOS) > Source > Header File,之后还得配置下桥接文件的路径,如下图所示,将新建的头文件路径添加进来就行了。

bridgeHeaderPath.png

注意点三:OC调用swift代码

oc调用swift的类需要在.m文件中包含头文件

#import "<#YourProjectName#>-Swift.h"

例如我的项目名称叫YXTeacherEn,所以包含的头文件叫

#import "YXTeacherEn-Swift.h"