如何枚举String类型的枚举?

如何枚举String类型的枚举?

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

例如,我该怎么做:

for suit in Suit {
    // do something with suit    print(suit.rawValue)}

结果示例:

♠
♥
♦
♣


天涯尽头无女友
浏览 2055回答 3
3回答

慕的地6264312

Swift 4.2+从Swift 4.2开始(使用Xcode 10),只需添加协议一致性即可CaseIterable从allCases以下方面受益:extension&nbsp;Suit:&nbsp;CaseIterable&nbsp;{}然后,这将打印所有可能的值:Suit.allCases.forEach&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;print($0.rawValue)}与早期Swift版本的兼容性(3.x和4.x)只是模仿Swift 4.2的实现:#if&nbsp;!swift(>=4.2)public&nbsp;protocol&nbsp;CaseIterable&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;associatedtype&nbsp;AllCases:&nbsp;Collection&nbsp;where&nbsp;AllCases.Element&nbsp;==&nbsp;Self &nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;var&nbsp;allCases:&nbsp;AllCases&nbsp;{&nbsp;get&nbsp;}}extension&nbsp;CaseIterable&nbsp;where&nbsp;Self:&nbsp;Hashable&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;var&nbsp;allCases:&nbsp;[Self]&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;[Self](AnySequence&nbsp;{&nbsp;()&nbsp;->&nbsp;AnyIterator<Self>&nbsp;in &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;raw&nbsp;=&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;first:&nbsp;Self? &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;AnyIterator&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;current&nbsp;=&nbsp;withUnsafeBytes(of:&nbsp;&raw)&nbsp;{&nbsp;$0.load(as:&nbsp;Self.self)&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;raw&nbsp;==&nbsp;0&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;first&nbsp;=&nbsp;current&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;current&nbsp;==&nbsp;first&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;nil &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;raw&nbsp;+=&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;current&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) &nbsp;&nbsp;&nbsp;&nbsp;}}#endif
打开App,查看更多内容
随时随地看视频慕课网APP