NS_EXTENSIBLE_STRING_ENUM - ShenYj/ShenYj.github.io GitHub Wiki
Apple 建议弃用
NS_STRING_ENUM/NS_EXTENSIBLE_STRING_ENUM
而改用NS_TYPED_ENUM/NS_TYPED_EXTENSIBLE_ENUM
, 两者效果完全一样
可扩展枚举以与不可扩展枚举 NS_STRING_ENUM、NS_TYPED_ENUM 类似的方式导入,不同之处在于它们接收一个额外的初始化器。
起初看文档时,我以为只有在使用 NS_EXTENSIBLE_STRING_ENUM、NS_TYPED_EXTENSIBLE_ENUM
时才能在 Swift 代码中为可扩展枚举添加新值
在我用 Xcode 13
实测下,都可以扩展新增值,只是在初始化新值时,要按照文档描述那样的
-
在
Swift
中为其扩展新增值public extension Week { // NS_TYPED_ENUM static var freeDay: Week { Week(rawValue: "WeekFreeDay") } // NS_TYPED_EXTENSIBLE_ENUM //static var freeDay: Week { Week("WeekFreeDay") } }
在查阅生成 Swift 接口中只能看到一个初始化器
public init(rawValue: String)
, 并未看到苹果官方文档中描述的多了一个init(_ rawValue: RawValue)
隐藏了外部参数标签的初始化,但在实际使用中又确实如文档描述那样