Swift 3 0 enum 的靈活使用介紹

2022-09-20 19:39:07 字數 1932 閱讀 8164

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看起來是這樣...