创建swift项目(略过)。把我自己创建新项目的整个过程记录一下,由于Swift不是太熟,属于摸着石头过河,有很多幼稚的问题,请高手跳过。
1、pch文件,在OC中,有个pch文件,而在swift中,创建一个.swift文件 就可替代pch,方便快捷。不需要配置build-setting
接下来,在OC中有很多好用的第三方包,比如AFNetwork,MJRefresh等,但这些包只有OC版,而当前项目为Swift。
现在以AFNetwork为例,将OC文件拖入项目,XCode会提示
点击YES,Xocde就会在新建OC文件的同时帮我们新建一个xxx-Bridging-Header.h文件,xxx是你的项目名称(Product Module),然后我们得编辑这个文件才能让Swfit代码调用OC代码
如此,就可以正常使用AFNetworking了。
接下来重写原项目的基类代码。
1、protocol 协议代理
定义方法,如果方法是可选的则添加前缀@objc optional,并且在protocal前添加@objc 如
@objc protocol AlertViewEventDelegate{
@objc optional func eventAtIndex(alertView : MyAlertView , event : Any , index : NSInteger) -> Void
}
2、枚举定义
enum BadgeValuePosition {
case BadgeValuePositionTopLeft
case BadgeValuePositionTopRight
case BadgeValuePositionCenterLeft
case BadgeValuePositionCenterRight
case BadgeValuePositionBottomLeft
case BadgeValuePositionBottomRight
}
3、字符串的截取
搜了很多String的截取,貌似在使用Range的时候,比较麻烦。所以我采取了转成NSString,配合NSRange进行截取,如下
var testStr : String = "123456789"
testStr = (testStr as NSString).substring(with: NSMakeRange(1,2))
4、16进制字符转数字
开发中,用到了颜色字符串(16进制)转数值,我写的方式如下:
class func hexValueToInt(str : String) -> Int{
var hexString : String = str.uppercased()
var sum : Int = 0
for i in hexString.utf8 {
sum = sum * 16 + Int(i) - 48
if i >= 65 {
sum -= 7
}
}
return sum
}
5、Array排序
var userList = [UserInfo]()
userList.append(UserInfo(name:"张三", phone:"13717717777"))
userList.append(UserInfo(name:"李四", phone:"13888888888"))
userList.append(UserInfo(name:"赵五", phone:"13417817817"))
userList = userList.sorted(by : {$0.name < $1.name})
6、判断属性类型 isKind
if a.isKind(of : A.self){
}
7、扩展(extension)添加属性
extension UIView{
var viewOrigin : CGPoint {
get{
return self.frame.origin
}
set{
var rect : CGRect = self.frame
rect.origin = newValue
self.frame = rect
}
}
}
8、Swift3 实现单例
项目中的用户信息一般都是单例模式,在swift3.0中弃用了dispatch_once,可以采用以下几种形式
1)普通创建法
final class Single : NSObject {
static let shared = Single()
private override init() {}
}
2)静态创建法
let single = Single()
class Single : NSObject{
//-MARK: 单例:方法2
class var sharedInstance2 : Single{
return single
}
}
9、集成snapkit
网友评论