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

时间:2015-01-30 00:29:46

标签: swift dictionary enums

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

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

1 个答案:

答案 0 :(得分:6)

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

case .Play: dict.updateValue(etc.)

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