我希望在用户在选择器视图中选择"操作"后从枚举中获取值.所以我有字符串:selectedGenre = "action".
如何从案件中获得"28"?
public enum MovieGenres: String {
case action = "28"
case adventure = "12"
case animation = "16"
...
}
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西:MoveGenres.("selectedgenre").rawValue
首先,这是你如何定义你的 enum
enum MovieGenre: String {
case action
case adventure
case animation
var code: Int {
switch self {
case .action: return 28
case .adventure: return 12
case .animation: return 16
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在给一个字符串
let stringFromPicker = "action"
Run Code Online (Sandbox Code Playgroud)
您可以尝试构建枚举值
if let movieGenre = MovieGenre(rawValue: stringFromPicker) {
print(movieGenre.code) // 28
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我重命名
MovieGenres为MovieGenre,实际上枚举名称应该是单数.
您可以使用rawValue来获取Strings:
MovieGenres.Action.rawValue // 28
Run Code Online (Sandbox Code Playgroud)
并从字符串中获取它:
let twentyEight = MovieGenres(rawValue: "28")
Run Code Online (Sandbox Code Playgroud)
另一个提示,Swift 约定使用小写字母命名您的案例,如下所示:
MovieGenres.action.rawValue // 28
Run Code Online (Sandbox Code Playgroud)
更新:
enum MovieGenre: String {
case action
case adventure
case animation
var value: Int {
switch self {
case .action: return 28
case .adventure: return 12
case .animation: return 16
}
}
}
let action = MovieGenre(rawValue: "action")?.value // 28
let adventure = MovieGenre(rawValue: "adventure")?.value // 12
let animation = MovieGenre(rawValue: "animation")?.value // 16
let none = MovieGenre(rawValue: "none")?.value // nil
if let value = MovieGenre(rawValue: pickerValue)?.value {
print(value)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5037 次 |
| 最近记录: |