Name convention for unwrapped value in Swift
You can assign the same name to an unwrapped variable as the optional.
Preferred:
var subview: UIView?
var volume: Double?
// later on...
if let subview = subview, let volume = volume {
// do something with unwrapped subview and volume
}
Not preferred:
var optionalSubview: UIView?
var volume: Double?
if let unwrappedSubview = optionalSubview {
if let realVolume = volume {
// do something with unwrappedSubview and realVolume
}
}
Taken from The Official raywenderlich.com Swift Style Guide. However these are just guidelines and other conventions may be just fine.
One may also use guard-let
construct to unwrap optionals. However, guard
creates a new variable which will exist outside the else statement so the naming options available for the unwrapped variable is different when compared to if-let
construct.
Refer the code example below:
import Foundation
let str = Optional("Hello, Swift")
func sameName_guard() {
// 1. All Good
// This is fine since previous declaration of "str" is in a different scope
guard let str = str else {
return
}
print(str)
}
func differentName_guard() {
let str1 = Optional("Hello, Swift")
// 2. ERROR
// This generates error as str1 is in the same scope
guard let str1 = str1 else {
return
}
print(str1)
}
sameName_guard()
differentName_guard()