Swift枚举错误:声明的语句块是未使用的闭包

Swift中的枚举看起来非常强大,但是……我一定不知道我是如何实现这一点的.我想为远程媒体播放器定义一些动作.似乎是枚举的一个很好的用例.我在Enum中定义了允许的消息类型,我想用它来获取修改后的参数字典.参数最终将作为JSON发送给播放器.目前,我得到一个Braced语句块是一个未使用的闭包错误.这是相关的代码

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
}
}

我确信还有更多功能(swiftian?)方式来表达这一点,但我还没有很好的语法运气.地图?

解决方法

你的开关语法有点偏,就是全部.你不需要{}围绕每个案例的表达式(当你试图创建一个闭包表达式时,Swift正在解释它们,因此错误).

只做案例.Play:dict.updateValue(等等).

另请注意,您必须在default子句中有一个语句 – 但在这种情况下您实际上并不需要认值,因为您的开关正在耗尽所有可能性.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...