如何枚舉String類型的枚舉?enum Suit: String {
case spades = "?"
case hearts = "?"
case diamonds = "?"
case clubs = "?"}例如,我該怎么做:for suit in Suit {
// do something with suit print(suit.rawValue)}結(jié)果示例:?
?
?
?
3 回答

慕的地6264312
TA貢獻1817條經(jīng)驗 獲得超6個贊
Swift 4.2+
從Swift 4.2開始(使用Xcode 10),只需添加協(xié)議一致性即可CaseIterable
從allCases
以下方面受益:
extension Suit: CaseIterable {}
然后,這將打印所有可能的值:
Suit.allCases.forEach { print($0.rawValue)}
與早期Swift版本的兼容性(3.x和4.x)
只是模仿Swift 4.2的實現(xiàn):
#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
- 3 回答
- 0 關(guān)注
- 2134 瀏覽
添加回答
舉報
0/150
提交
取消