當前我使用枚舉來定義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