SWIFT

Swift Tuple: Syntax, Usage, and Examples

A tuple in Swift lets you group multiple values into a single compound value. It’s useful when you need to return multiple values from a function or store related data without creating a custom type.

How to Use Tuples in Swift

You can create a tuple by grouping values inside parentheses.

let person = ("Alice", 30)
print(person.0)  // Output: Alice
print(person.1)  // Output: 30

You can also name tuple elements for better readability.

let personNamed = (name: "Alice", age: 30)
print(personNamed.name)  // Output: Alice
print(personNamed.age)   // Output: 30

Tuples can hold different types of values.

let response = (200, "Success", true)

When to Use Tuples in Swift

Tuples come in handy when you need to work with multiple related values but don’t want to define a custom type.

Returning Multiple Values from a Function

If a function needs to return more than one value, a tuple simplifies the process.

func getUserInfo() -> (String, Int) {
    return ("Alice", 30)
}

let user = getUserInfo()
print(user.0)  // Output: Alice
print(user.1)  // Output: 30

Grouping Related Values

Instead of creating a struct, you can use a tuple to store related values.

let location = (latitude: 40.7128, longitude: -74.0060)

Using Tuples in Switch Statements

Tuples help simplify switch statements by allowing pattern matching.

let point = (2, 3)

switch point {
case (0, 0):
    print("Origin")
case (_, 0):
    print("On the x-axis")
case (0, _):
    print("On the y-axis")
default:
    print("Somewhere in the plane")
}

Examples of Tuples in Swift

Tuple Destructuring

You can extract tuple values into separate variables.

let (firstName, age) = ("Alice", 30)
print(firstName)  // Output: Alice
print(age)        // Output: 30

If you don’t need all the values, use _ to ignore them.

let (_, statusCode) = ("Not used", 404)
print(statusCode)  // Output: 404

Passing Tuples as Function Parameters

Tuples work well as function parameters.

func greetUser(user: (String, Int)) {
    print("Hello \(user.0), you are \(user.1) years old.")
}

greetUser(user: ("Bob", 25))

Storing Tuples in an Array

You can store multiple tuples in an array.

let users: [(String, Int)] = [("Alice", 30), ("Bob", 25)]
print(users[0].0)  // Output: Alice

Using Tuples with Enums

You can combine tuples with enums to store structured data.

enum Status {
    case success, failure
}

let apiResponse: (code: Int, message: String, status: Status) = (200, "OK", .success)
print(apiResponse.status)  // Output: success

Learn More About Swift Tuples

Swift provides additional ways to use tuples effectively.

Named vs. Unnamed Tuples

Unnamed tuples require index-based access, while named tuples improve readability.

let unnamedTuple = ("Swift", 5.9)
print(unnamedTuple.0)  // Output: Swift

let namedTuple = (language: "Swift", version: 5.9)
print(namedTuple.language)  // Output: Swift

Hashable Tuples

Tuples aren’t hashable by default, so you can’t use them in sets or dictionaries.

let user1 = (id: 1, name: "Alice")
let user2 = (id: 2, name: "Bob")

let userSet: Set = [user1, user2]  // Error: Tuples are not hashable by default

To store tuples in a set, convert them into a hashable struct.

struct User: Hashable {
    let id: Int
    let name: String
}

let users: Set = [User(id: 1, name: "Alice"), User(id: 2, name: "Bob")]

Optional Tuples

Tuples can be optional, meaning they may contain a value or be nil.

var optionalTuple: (String, Int)? = nil
optionalTuple = ("Alice", 30)

Comparing Tuples

If a tuple contains comparable values, you can compare it directly.

print((1, "Alice") < (2, "Bob"))  // Output: true

Best Practices for Using Tuples in Swift

  • Use tuples when grouping temporary values, but prefer structs for complex data.
  • Name tuple elements to improve readability.
  • Use tuple destructuring to extract values efficiently.
  • Avoid deeply nested tuples since they reduce code clarity.

Swift tuples let you group multiple values into a single unit without creating a custom type. They simplify function return values, store related data, and improve switch statements. While they are useful for temporary data, structs or classes work better for long-term storage.

Learn to Code in Swift for Free
Start learning now
button icon
To advance beyond this tutorial and learn Swift by doing, try the interactive experience of Mimo. Whether you're starting from scratch or brushing up your coding skills, Mimo helps you take your coding journey above and beyond.

Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.

You can code, too.

© 2025 Mimo GmbH