Suz*_*Suz 5 enums dictionary swift
Swift中的枚举看起来非常强大,但是......我一定不知道我是如何实现这一点的.我想为远程媒体播放器定义一些动作.似乎是枚举的一个很好的用例.我在Enum中定义了允许的消息类型,我想用它来获取修改后的参数字典.参数最终将作为JSON发送给播放器.目前,我收到了一个Braced block of statements is an unused closure错误.这是相关的代码:
public enum PlayerCommand {
case Play
case Pause
case Load(String)
func params(cmd_id:NSInteger) -> [String : Any] {
var dict = [
CMD_ID : cmd_id,
TYPE : "LOAD",
AUTOPLAY : false,
MEDIA : NSNull()
]
switch self {
case .Load(let media): {
dict.updateValue(media, forKey: MEDIA)
}
case .Play: {
dict.updateValue("PLAY", forKey: TYPE)
dict[CURRENT_TIME] = NSNull()
}
case .Pause: {
dict.updateValue("PAUSE", forKey: TYPE)
}
default:
}
return dict
}
}
Run Code Online (Sandbox Code Playgroud)
我确信还有更多功能(swiftian?)方式来表达这一点,但我还没有很好的语法运气.地图?
你的switch语法有点偏,就是全部.你不需要{ }围绕每个的表达式case(当你试图创建一个闭包表达式时,Swift正在解释它们,因此错误).
做吧case .Play: dict.updateValue(etc.).
另请注意,您必须在default子句中有一个语句 - 但在这种情况下您实际上并不需要默认值,因为您的开关正在耗尽所有可能性.