Swift enum error: Braced block of statements is an unused closure
Swift enum error: Braced block of statements is an unused closure
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?)的方式来表达这一点,但我对语法还不太满意。地图?
您的 switch
语法有点不对劲,仅此而已。您不需要 { }
围绕每个 case
的表达式(Swift 在您尝试创建闭包表达式时解释它们,因此会出现错误)。
就做case .Play: dict.updateValue(etc.)
。
另请注意,您必须在 default 子句中有一个声明 - 但在这种情况下您实际上不需要 default,因为您的 switch 已经用尽了所有可能性。
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?)的方式来表达这一点,但我对语法还不太满意。地图?
您的 switch
语法有点不对劲,仅此而已。您不需要 { }
围绕每个 case
的表达式(Swift 在您尝试创建闭包表达式时解释它们,因此会出现错误)。
就做case .Play: dict.updateValue(etc.)
。
另请注意,您必须在 default 子句中有一个声明 - 但在这种情况下您实际上不需要 default,因为您的 switch 已经用尽了所有可能性。