OC與Swift中的枚舉
OC的枚舉NS_ENUM
/** 支付狀態(tài)對應的枚舉 */
typedef NS_ENUM(NSInteger, PaymentType) {
/** 支付寶支付 */
KPaymentTypeZhiFuBao = 1,
/** 微信支付 */
KPaymentTypeWeiXin = 2,
/** 銀聯(lián)支付 */
KPaymentTypeYinLian = 3,
/** 錢包支付 */
KPaymentTypeWallet = 4,
};
NS_ENUM : 遞增枚舉, 每個枚舉類型即便不是每個都賦值,那么以后的值也會遞增
NSInteger: 枚舉值的數(shù)據(jù)類型
PaymentType: 枚舉的數(shù)據(jù)類型,相當于 枚舉的名稱,用這個名稱來創(chuàng)建變量
KPaymentTypeZhiFuBao = 1, 枚舉的值
建立變量:PaymentType type;
賦值: PaymentType type = KPaymentTypeZhiFuBao
;
OC的枚舉NS_OPTIONS
/** 支付狀態(tài)對應的枚舉 */
typedef NS_OPTIONS(NSInteger, PaymentType) {
/** 支付寶支付 */
KPaymentTypeZhiFuBao = 1,
/** 微信支付 */
KPaymentTypeWeiXin = 2,
/** 銀聯(lián)支付 */
KPaymentTypeYinLian = 3,
/** 錢包支付 */
KPaymentTypeWallet = 4,
};
NS_OPTIONS:定義的枚舉值是位移的,可以按位或設(shè)置數(shù)值,0表示什么附加操作方式都沒有
Swift的枚舉
public enum UITableViewStyle : Int {
case Plain // regular table view
case Grouped // preferences style table view
}
UITableViewStyle: 用來創(chuàng)建屬性的名稱如var style: UITableViewStyle
這是一個TableView的枚舉 調(diào)用的話UITableViewStyle.Plain
直接賦值
/** 支付方式 */
enum PaymentType:Int{
case KPaymentTypeZhiFuBao = 1
case KPaymentTypeWeiXin = 2
case KPaymentTypeYinLian = 3
func isPaymentType()->(String){
switch self{
case .KPaymentTypeZhiFuBao:
return "支付寶"
case .KPaymentTypeWeiXin:
return "微信支付"
case .KPaymentTypeYinLian:
return "銀聯(lián)"
}
}
}
也可以這樣寫...對于一些現(xiàn)有的OC需求來講這么寫實在是太好了.
Swift中的結(jié)構(gòu)體
public struct CGSize {
public var width: CGFloat
public var height: CGFloat
public init()
public init(width: CGFloat, height: CGFloat)
}
與類唯一的區(qū)別就是 這個是值傳遞,類是地址傳遞.
mutating 關(guān)鍵字
在結(jié)構(gòu)體中如果想要通過綁定的方法來修改結(jié)構(gòu)體的值時,要加上mutating
關(guān)鍵字,例子
ublic mutating func append(newElement: Element)