How to check whether a value is not nil in Swift and assign it to a variable at the same time?

question swift
Ram Patra Published on November 16, 2023

In Swift, there are several ways to check for nil and assign a value to a variable, depending on the context and what you want to achieve. Here are some common approaches:

  1. Optional Binding (if let):

    • This is used to safely unwrap an optional.
    • If the optional contains a value, it is unwrapped and assigned to a temporary constant, which you can use inside the if block.
    if let value = optionalVariable {
        // Use 'value' here, which is not nil
    } else {
        // 'optionalVariable' was nil
  2. Guard Statement (guard let):

    • Similar to if let, but it’s generally used to exit early if the optional is nil.
    • This helps in reducing the nesting of if-else statements.
    guard let value = optionalVariable else {
        // Handle the nil case, typically return or throw an error
    // Use 'value' here, which is not nil
  3. Nil Coalescing Operator (??):

    • This operator provides a default value for an optional if it is nil.
    • It’s a shorthand for a conditional check and assignment.
    let value = optionalVariable ?? defaultValue
  4. Optional Chaining:

    • Used to call properties, methods, and subscripts on an optional that might currently be nil.
    • If the optional is nil, the expression short-circuits and returns nil.
    let value = optionalVariable?.someProperty
  5. Implicit Unwrapping:

    • This is when you’re certain that an optional will always have a value after its first set.
    • Use with caution, as it leads to runtime crashes if the variable is accessed while nil.
    let value = optionalVariable!
  6. Using map or flatMap on Optionals:

    • These are higher-order functions that can be used to transform an optional value.
    let transformedValue = optionalVariable.map { $0 * 2 }  // Only executes if not nil

Each of these methods has its own use case and suitability depending on what you’re trying to achieve and how you want to handle nil values. The choice among these should be guided by the specific requirements of your code and the level of safety you want to ensure.

Ram Patra Published on November 16, 2023
Image placeholder

Keep reading

If this article was helpful, others might be too

question macOS swift August 6, 2020 How to open an app's window on top of all others in Swift?

You can open your app’s window on top of all other open application windows with the below code:

June 7, 2020 How to add Global Key Shortcuts to your macOS app using MASShortcut

Adding Global Keyboard Shortcuts to your macOS app can be a pain as there isn’t a Cocoa API for the same. You would have to rely on the old, most of which are deprecated, Carbon API.

question macOS swift August 14, 2020 How to detect Delete key press in Swift?

Delete key press detection is slightly different than other keys. It uses NSDeleteCharacter like below: