美文网首页swift
Swift关于对枚举关联值理解

Swift关于对枚举关联值理解

作者: 得_道 | 来源:发表于2021-03-16 23:14 被阅读0次

刚开始很疑惑,为啥枚举要整个关联值出来,用处在什么地方?
经过的学习和思考后有了一点自己理解。
首先,来看一个OC写的枚举的例子。
app跳转一个网页有两种情况:

  1. 直接跳转的形式
  2. 拼接token后,再跳转

先来定义个枚举

typedef NS_ENUM(NSInteger ,PowerType) {
    Power_Type_0 = 0,//不对url做任何处理,直接加载
    Power_Type_1 = 1,//拼接token,再跳转url
};

@interface WebViewController : UIViewController

- (instancetype)initWithPowerType:(PowerType)powerType URL:(NSString *)url token:(NSString*)token;

@end
@interface CEGWebViewController ()

@property (copy ,nonatomic) NSString *urlStr;
@property (assign ,nonatomic) PowerType powerType;
@property (copy ,nonatomic) NSString *token;

@end
@implementation WebViewController

- (instancetype)initWithPowerType:(PowerType)powerType URL:(NSString *)url token:(NSString*)token {
    if (self = [super init]) {
        self.powerType = powerType;
        self.urlStr = url;
        self.token = token;
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    switch (self.powerType) {
        case Power_Type_0:
            //直接用url请求网页
            break;
        case Power_Type_1:
            //用url拼接token后再加载网页
            break;
        default:
            break;
    }
}

@end

下面用swift的枚举关联值重写上面的场景

enum PowerType {
    case directload(String)
    case joinToken(String, String)
}

class WebViewController: UIViewController {
    let powerType: PowerType!
    
    init(powerType: PowerType) {
        self.powerType = powerType
        
        super.init(nibName: nil, bundle: nil)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        switch self.powerType {
        case .directload(let url):
            //直接用url请求网页
            break
            
        case .joinToken(let url, let token):
            //用url拼接token后再加载网页
            break

        case .none: break
        }
    }
}

个人理解关联值,即跟此枚举类型相关的参数,都可以绑定到枚举类型上,方便操作,不用在类一堆的属性上来进行操作,结构清晰!

相关文章

  • Swift关于对枚举关联值理解

    刚开始很疑惑,为啥枚举要整个关联值出来,用处在什么地方?经过的学习和思考后有了一点自己理解。首先,来看一个OC写的...

  • Swift与OC的语法简单对比(常用语法二)

    20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...

  • Swift - 递归枚举

    个人理解 递归枚举是拥有另一个枚举作为枚举成员关联值的枚举,实际上就是Swift中枚举关联值的特性和递归算法在Sw...

  • Swift 5.1 (8) - 枚举类型

    级别: ★☆☆☆☆标签:「iOS」「Swift 5.1」「枚举」「迭代枚举」「枚举关联值」「递归枚举」作者: 沐灵...

  • Swift枚举关联值的内存探究

    这是枚举最基础的用法,但是在swift中,对枚举的功能进行了加强,也就是关联值。 关联值可以将额外信息附加到 en...

  • 枚举(Enum)

    目录 枚举语法 关联值 原始值 递归枚举 ** 在 Swift 中不必给每一个枚举成员提供一个值,如果给枚举成员提...

  • iOS-Swift-枚举

    Swift中的枚举比OC中的枚举更强大。 一. 枚举的基本用法 二. 关联值(Associated Values)...

  • swift

    你可以定义swift枚举来存储任意类型的关联值,如果需要的话,每个枚举成员的关联值类型可以各不相同。枚举的这种特性...

  • Swift 5.x enum关联值

    可以定义Swift枚举来存储任意给定类型的关联值, 如果需要的话不同枚举成员关联值的类型可以不同 e.g. 输出结...

  • Swift5.1学习随笔之枚举enum

    Swift的枚举非常强大好用 如果变量有固定几种取值,建议用枚举 基本用法 关联值 Associated Valu...

网友评论

    本文标题:Swift关于对枚举关联值理解

    本文链接:https://www.haomeiwen.com/subject/syujcltx.html