創(chuàng)建swift項目(略過)。把我自己創(chuàng)建新項目的整個過程記錄一下,由于Swift不是太熟,屬于摸著石頭過河,有很多幼稚的問題,請高手跳過。
1、pch文件,在OC中,有個pch文件,而在swift中,創(chuàng)建一個.swift文件 就可替代pch,方便快捷。不需要配置build-setting


接下來,在OC中有很多好用的第三方包,比如AFNetwork,MJRefresh等,但這些包只有OC版,而當前項目為Swift。
現(xiàn)在以AFNetwork為例,將OC文件拖入項目,XCode會提示
點擊YES,Xocde就會在新建OC文件的同時幫我們新建一個xxx-Bridging-Header.h文件,xxx是你的項目名稱(Product Module),然后我們得編輯這個文件才能讓Swfit代碼調用OC代碼


如此,就可以正常使用AFNetworking了。
接下來重寫原項目的基類代碼。
1、protocol 協(xié)議代理
定義方法,如果方法是可選的則添加前綴@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進制字符轉數字
開發(fā)中,用到了顏色字符串(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 實現(xiàn)單例
項目中的用戶信息一般都是單例模式,在swift3.0中棄用了dispatch_once,可以采用以下幾種形式
? ? 1)普通創(chuàng)建法
final class Single : NSObject {
? ? static let?shared?=?Single()
? ? private override?init()?{}
}
? ?2)靜態(tài)創(chuàng)建法
let single = Single()
class Single : NSObject{
//-MARK: 單例:方法2
? ? ?class var sharedInstance2 : Single{
? ? ? ? ? return single
? ? }
}
9、集成snapkit