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()

Tags:

Swift