栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何枚举String类型的枚举?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何枚举String类型的枚举?

迅捷4.2+

从Swift 4.2(使用Xpre
10)开始,只需添加协议一致性

CaseIterable
即可从中受益
allCases
。要添加此协议一致性,您只需要在某处写:

extension Suit: CaseIterable {}

如果枚举是您自己的,则可以直接在声明中指定一致性:

enum Suit: String, CaseIterable { case spades = "♠"; case hearts = "♥"; case diamonds = "♦"; case clubs = "♣" }

然后,以下代码将打印所有可能的值:

Suit.allCases.forEach {    print($0.rawValue)}

与早期Swift版本(3.x和4.x)的兼容性

如果您需要支持Swift 3.x或4.0,则可以通过添加以下代码来模仿Swift 4.2的实现:

#if !swift(>=4.2)public protocol CaseIterable {    associatedtype AllCases: Collection where AllCases.Element == Self    static var allCases: AllCases { get }}extension CaseIterable where Self: Hashable {    static var allCases: [Self] {        return [Self](AnySequence { () -> AnyIterator<Self> in var raw = 0 var first: Self? return AnyIterator {     let current = withUnsafeBytes(of: &raw) { $0.load(as: Self.self) }     if raw == 0 {         first = current     } else if current == first {         return nil     }     raw += 1     return current }        })    }}#endif


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640681.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号