当前我使用枚举来定义API。我的一个API是张贴一张纸条,是否有图像。在枚举中自动解包可选属性
enum StoreAPI {
...
case newNote(String, Data?) /* note_description, note_image */
}
据我所知来处理这种情况,有两种方式:
// Option 1
switch api {
...
case let newNote(description, imageData):
if let imageData = imageData {
// Post with image
}
else {
// Post without image
}
...
}
// Option 2
switch api {
...
case let newNote(description, nil):
// Post without image
case let newNote(description, imageData):
let imageData = imageData!
...
}
我不知道是否有任何其他的方式来自动解开可选值,或者更好地处理它,或更多清晰。
比较[Swift模式匹配与枚举和可选元组关联值](http://stackoverflow.com/q/32859646/2976878) - 您可以使用可选模式。 – Hamish
哦,我在Swift 3.1中找不到关于.Some(foo)的任何信息。这是一个新的自定义枚举?这可能是更好的方法来自动打开可选值 – nahung89
'.some(Wrapped)'(以前'.Some(Wrapped)')是['Optional']的一种情况(https://developer.apple.com/reference/swift/optional) - 它是一个'enum'本身:)但正如Martin在他的回答中所表明的那样,它有一个语法糖形式,只需在绑定值标识符的末尾添加一个'?' case,'let let .newNote(description,imageData?):'。 – Hamish