1. 前言
一晃半年了,從之前的順豐優選跳槽到現在的閃銀,都沒有時間好好寫文章,先進行自我批評,最近在忙開源專案,在造各種輪子的過程中,深深的體會到了swift中enum的便利,直接上**。
2. objective-c 中的enum
typedef ns_enum(nsuinteger, usertype) ;
這是一段標準的objective-c風格的列舉定義,宣告乙個型別為nsuinteger的列舉usertype,它有什麼用呢, 多數情況下列舉起的是解釋的作用,何為解釋?
來個例項:
後台返回一串json,usertype可能為1~9,踩過坑的猿們都明白,若是直接使用後台返回的usertype欄位進行業務邏輯的處理,可能會出現牽一髮而動全身的尷尬局面,這個既關乎**規範,也少給自己程式設計客棧挖坑。
推薦的做法是,將返回的usertype對映成列舉,之後**中其他地方也可以呼叫,後台如果usertype對應關係改變,我們也只需改與之對應的列舉對映
3. swift 中的enum
使用過objective-c中的列舉,我們會發現,有時候我們不想用基礎型別的列舉,比如nsuinteger等等,我們想將typedef ns_enum(nsuinteger, usertype)的nsuinteger改成nsstring,但是系統不支援定義非基礎型別的列舉,會報錯is an invaild underlying type,那就導致了列舉使用不是那麼靈活,我們來看看swift中的列舉
enum ciblurstyle: string
func handleenum(hudtype: ciblurhudtype) -> void
}// 如何使用
handleenum(.info("這是一段提示文字~"))
let err = nserror.init(domain: "發生了一些不為人知的錯誤", code: 110, userinfo: nil)
handleenum(.error(err))
4. swift 中的enum如何靈活使用
4.1 利用enum精簡**
swift中的enum使用非常方便,例項:
public enum ciimageoperation
我們想要造乙個請求庫,**完可能會對進行上面列舉中的處理,不使用enum,我們可能會宣告很多方法,如:
extensin uiimageview
func setimage(with url: url, scaleto: cgsize) -> void {}
func setimage(with url: url, zip: (bool, cgfloat)) -> void {}
}來,我們換一種寫法,看著更精簡
extension uiimageview
}}// 使用
ima**iew.setimage(with url: "www.codeinventor.club", imageoperation: .cornerradius(3.0))
4.2 利用enum對網路請求結果等做簡單的package操作
enum ciurlresponse
通常在乙個網路請求完畢之後,會返回一系列response,利用enum可以傳遞引數的特性,我們可以使用enum對網路請求進行包裝,使其更加直觀易懂,如下面這個func:
func getdata(with url: url) -> ciurlresponse {}
注:enum 使用時傳引數,很方便,但還是不建議傳太多引數,或者過於複雜的closure
舉個負面例子:
enum hudstyle
。。。不注釋txklh根本看不懂這堆引數什麼意思
so. swift中的enum適合傳遞少量引數,或者簡單的closure,與function相比,enum承擔的更多的還是解釋的作用
本文標題: swift 3.0 enum 的靈活使用介紹
本文位址:
ZYNQ MIO EMIO IO的區別和靈活使用
zynq mio emio io的區別和靈活使用 在使用zynq上arm cortex a9平台時首先面臨的就是對io進行操作,總的來說對io操作無怪乎兩種方式,一種是直接對gpio暫存器進行操作,這樣程式效率高,但編寫 困難 另一種是呼叫sdk工具提供的api介面函式。在實際使用時zynq又把gp...
swift中UIDatePicker的使用
效果圖 示例 例項化uidatepicker 預設寬高分別是 螢幕的寬度,216的高度 let datepicker uidatepicker self.view.addsubview datepicker 屬性設定 datepicker.backgroundcolor uicolor.lightg...
Swift中的列舉enum 與C中的列舉
在c語言中,甚至oc等其他高階語言中,都是把enum列舉的值當作是乙個int整數來替代 具體可看我的這篇文章 c語言的列舉與巨集定義 注 本篇文章學習自泊學 boxueio.com ps swift更新得真是非常快啊,4個月不到前寫的 今天開啟就提醒有語法要修正 在swift中,enum看起來是這樣...