Skip to main content

Swift Variables

Variables are one of the most fundamental concepts in any programming language. In Swift, variables allow you to store and manage data in your applications. This guide will walk you through everything you need to know about variables in Swift - from basic declarations to best practices.

Introduction to Variables

A variable is a named storage location in a computer's memory that can hold a value. Think of it like a labeled box where you can put things and retrieve them later. In Swift, variables are flexible containers that can change their values throughout your program's execution.

Declaring Variables in Swift

In Swift, you declare variables using the var keyword, followed by a name, type annotation, and an initial value.

Basic Syntax

swift
var variableName: DataType = value

Let's look at some examples:

swift
// Declaring a string variable
var greeting: String = "Hello, Swift!"

// Declaring an integer variable
var count: Int = 10

// Declaring a boolean variable
var isCompleted: Bool = false

// Declaring a double variable
var temperature: Double = 72.8

Type Inference

Swift has a feature called "type inference" which means the compiler can automatically determine the type of your variable based on the value you assign to it. This allows you to omit the type annotation in many cases:

swift
// Type is inferred as String
var name = "John Doe"

// Type is inferred as Int
var age = 30

// Type is inferred as Double
var height = 6.2

You can verify the inferred type using the following code:

swift
var score = 85
print(type(of: score)) // Output: Int

var pi = 3.14159
print(type(of: pi)) // Output: Double

Modifying Variables

The key characteristic of variables is that their values can be changed after they're declared:

swift
var counter = 0
print(counter) // Output: 0

counter = 1
print(counter) // Output: 1

counter = counter + 1
print(counter) // Output: 2

You can also update variables of the same type:

swift
var message = "Hello"
message = "Hello, world!"
print(message) // Output: Hello, world!

However, you cannot change the type of a variable once it's been established:

swift
var value = 10
// This would cause a compilation error:
// value = "ten" // Cannot assign value of type 'String' to type 'Int'

Variables vs Constants

Swift provides two ways to declare data containers:

  • var: for variables whose values can change
  • let: for constants whose values cannot change after initial assignment
swift
var changeable = 100 // Can be changed later
let unchangeable = 200 // Cannot be changed

changeable = 150 // This is valid
// unchangeable = 250 // This would cause an error

As a best practice, use constants (let) whenever you know the value won't change. This makes your code safer and communicates your intent more clearly.

Variable Naming Rules and Conventions

When naming your variables in Swift, follow these guidelines:

  1. Names can contain letters, numbers, and underscores
  2. Names cannot start with a number
  3. Names cannot contain spaces or special characters
  4. Swift is case-sensitive, so name and Name are different variables
swift
// Valid variable names
var userName = "swift_learner"
var user123 = "beginner"
var _internalValue = 42
var camelCaseIsPreferred = true

// Invalid variable names
// var 1stPlace = "Gold" // Cannot start with number
// var user-name = "john" // Cannot contain hyphen
// var "quotedVar" = 100 // Cannot contain quotes

Swift Naming Conventions

While not enforced by the compiler, Swift has common naming conventions:

  • Use camelCase for variable names (start with lowercase, then capitalize first letter of subsequent words)
  • Be descriptive but concise
  • Avoid abbreviations unless they are well-known
swift
// Recommended
var firstName = "John"
var itemCount = 5
var isUserLoggedIn = true

// Not recommended
var fn = "John" // Too short/unclear
var number_of_items = 5 // Not camelCase
var x = true // Not descriptive

Working with Different Data Types

Swift supports various data types for variables:

Numeric Types

swift
// Integer types
var integer: Int = 42
var unsignedInteger: UInt = 42 // Cannot be negative

// Floating-point types
var float: Float = 3.14159
var double: Double = 3.14159265359 // More precision than Float

String and Character Types

swift
var greeting: String = "Hello, Swift!"
var singleCharacter: Character = "A"

// String concatenation
var firstName = "John"
var lastName = "Doe"
var fullName = firstName + " " + lastName
print(fullName) // Output: John Doe

// String interpolation
var age = 30
var introduction = "My name is \(fullName) and I am \(age) years old."
print(introduction) // Output: My name is John Doe and I am 30 years old.

Boolean Type

swift
var isEnabled: Bool = true
var hasPermission = false

if isEnabled {
print("The feature is enabled")
}

// Toggle a boolean
isEnabled = !isEnabled
print(isEnabled) // Output: false

Optional Variables

Swift has a special type called "optional" that can either contain a value or be nil (no value).

swift
var optionalName: String? = "John"
var optionalAge: Int? = nil

// Safely unwrapping optionals
if let name = optionalName {
print("Hello, \(name)!") // Output: Hello, John!
}

if let age = optionalAge {
print("You are \(age) years old.")
} else {
print("Age is unknown.") // This will print
}

Practical Examples

Let's look at some real-world examples of using variables in Swift.

Example 1: Temperature Converter

swift
// Temperature converter
var celsiusTemperature = 25.0
var fahrenheitTemperature = (celsiusTemperature * 9/5) + 32

print("\(celsiusTemperature)°C is equal to \(fahrenheitTemperature)°F")
// Output: 25.0°C is equal to 77.0°F

// Convert back
celsiusTemperature = (fahrenheitTemperature - 32) * 5/9
print("Converting back: \(fahrenheitTemperature)°F is equal to \(celsiusTemperature)°C")
// Output: Converting back: 77.0°F is equal to 25.0°C

Example 2: User Profile

swift
// User profile information
var userName = "swift_developer"
var fullName = "Jane Smith"
var age = 28
var isSubscribed = true
var memberSince = "2021-05-15"

// Generate profile summary
var profileSummary = """
User Profile:
Username: \(userName)
Name: \(fullName)
Age: \(age)
Subscribed: \(isSubscribed ? "Yes" : "No")
Member Since: \(memberSince)
"""

print(profileSummary)
/* Output:
User Profile:
Username: swift_developer
Name: Jane Smith
Age: 28
Subscribed: Yes
Member Since: 2021-05-15
*/

// Update profile information
age = 29
isSubscribed = false

// Generate updated profile
profileSummary = """
Updated Profile:
Username: \(userName)
Name: \(fullName)
Age: \(age)
Subscribed: \(isSubscribed ? "Yes" : "No")
Member Since: \(memberSince)
"""

print(profileSummary)
/* Output:
Updated Profile:
Username: swift_developer
Name: Jane Smith
Age: 29
Subscribed: No
Member Since: 2021-05-15
*/

Example 3: Shopping Cart

swift
// Shopping cart
var itemName = "Swift Programming Book"
var itemPrice = 29.99
var quantity = 2
var hasDiscount = true
var discountPercentage = 15.0

// Calculate total
var subtotal = itemPrice * Double(quantity)
var discount = hasDiscount ? subtotal * discountPercentage / 100.0 : 0.0
var total = subtotal - discount

print("Shopping Cart:")
print("Item: \(itemName)")
print("Price: $\(itemPrice) x \(quantity)")
print("Subtotal: $\(subtotal)")
if hasDiscount {
print("Discount (\(discountPercentage)%): $\(discount)")
}
print("Total: $\(total)")

/* Output:
Shopping Cart:
Item: Swift Programming Book
Price: $29.99 x 2
Subtotal: $59.98
Discount (15.0%): $8.997
Total: $50.983
*/

Best Practices for Working with Variables

  1. Use constants whenever possible: If a value won't change, use let instead of var.
  2. Be descriptive with names: Choose variable names that clearly describe what they hold.
  3. Declare variables close to their use: Declare variables as close as possible to where they're used.
  4. Initialize variables appropriately: Give variables sensible initial values.
  5. Use type annotation when necessary: While Swift's type inference is powerful, sometimes explicitly declaring types improves code clarity.

Summary

Variables are fundamental building blocks in Swift programming that allow you to:

  • Store and manipulate data of various types
  • Change values throughout program execution
  • Create more dynamic and flexible applications

In Swift, variables are declared with the var keyword, while constants (immutable values) use the let keyword. Swift's type inference allows you to omit explicit type annotations in many cases, making your code cleaner and more concise.

Remember to follow Swift's naming conventions and best practices when working with variables to make your code more readable and maintainable.

Exercises

  1. Create variables to store your personal information (name, age, favorite programming language).
  2. Write a small program that calculates the area and perimeter of a rectangle using variables.
  3. Create a program that converts currency from USD to EUR using variables and prints the result.
  4. Practice with optional variables by creating a user profile where some information might be missing.
  5. Create a temperature conversion app that converts between Celsius, Fahrenheit, and Kelvin.

Additional Resources

Happy coding with Swift variables!



If you spot any mistakes on this website, please let me know at [email protected]. I’d greatly appreciate your feedback! :)