OC与Swift中的枚举
OC的枚举NS_ENUM
/** 支付状态对应的枚举 */
typedef NS_ENUM(NSInteger, PaymentType) {
/** 支付宝支付 */
KPaymentTypeZhiFuBao = 1,
/** 微信支付 */
KPaymentTypeWeiXin = 2,
/** 银联支付 */
KPaymentTypeYinLian = 3,
/** 钱包支付 */
KPaymentTypeWallet = 4,
};
NS_ENUM : 递增枚举, 每个枚举类型即便不是每个都赋值,那么以后的值也会递增
NSInteger: 枚举值的数据类型
PaymentType: 枚举的数据类型,相当于 枚举的名称,用这个名称来创建变量
KPaymentTypeZhiFuBao = 1, 枚举的值
建立变量:PaymentType type;
赋值: PaymentType type = KPaymentTypeZhiFuBao
;
OC的枚举NS_OPTIONS
/** 支付状态对应的枚举 */
typedef NS_OPTIONS(NSInteger, PaymentType) {
/** 支付宝支付 */
KPaymentTypeZhiFuBao = 1,
/** 微信支付 */
KPaymentTypeWeiXin = 2,
/** 银联支付 */
KPaymentTypeYinLian = 3,
/** 钱包支付 */
KPaymentTypeWallet = 4,
};
NS_OPTIONS:定义的枚举值是位移的,可以按位或设置数值,0表示什么附加操作方式都没有
Swift的枚举
public enum UITableViewStyle : Int {
case Plain // regular table view
case Grouped // preferences style table view
}
UITableViewStyle: 用来创建属性的名称如var style: UITableViewStyle
这是一个TableView的枚举 调用的话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 "银联"
}
}
}
也可以这样写...对于一些现有的OC需求来讲这么写实在是太好了.
Swift中的结构体
public struct CGSize {
public var width: CGFloat
public var height: CGFloat
public init()
public init(width: CGFloat, height: CGFloat)
}
与类唯一的区别就是 这个是值传递,类是地址传递.
mutating 关键字
在结构体中如果想要通过绑定的方法来修改结构体的值时,要加上mutating
关键字,例子
ublic mutating func append(newElement: Element)