開發(fā)自己第一個Swift項目(持續(xù)更新)

創(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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容