Swift Tuple

In Swift, a tuple is a group of different values. And, each value inside a tuple can be of different data types.

Suppose we need to store information about the name and price of a product, we can create a tuple with a value to store name (string) and another value to store price (float)


Create A Tuple

In Swift, we use the parenthesis () to store elements of a tuple. For example,

var product = ("MacBook", 1099.99)

Here, product is a tuple with a string value Macbook and integer value 1099.99.


Access Tuple Elements

Like an array, each element of a tuple is represented by index numbers (0, 1, ...) where the first element is at index 0.

We use the index number to access tuple elements. For example,

// access the first element
product.0

// access second element
product.1

Example: Swift Tuple

// create tuple with two elements
var product = ("MacBook", 1099.99)

// access tuple elements
print("Name:", product.0)
print("Price:", product.1)

Output

Name: MacBook
Price: 1099.99

In the above example, we have created a tuple named product with two values.

We have used the index number: product.0 and product.1 to access tuple elements.

Note: Since the first value of the tuple is a string and the second is an integer. So the type of the tuple is (String, Int).


Modify Tuple Element

We can modify a tuple element by assigning a new value to the particular index. For example,

// create tuple with two elements
var product = ("MacBook", 1099.99)

print("Original Tuple: ")

// access tuple elements 
print("Name:", product.0)
print("Price:", product.1)

// modify second value
product.1 = 1299.99

print("\nTuple After Modification: ")

// access tuple elements
print("Name:", product.0)
print("Price:", product.1)

Output

Original Tuple: 
Name: MacBook
Price: 1099.99

Tuple After Modification: 
Name: MacBook
Price: 1299.99

In the above example, we have created a tuple named product with values: MacBook and 1099.99. Notice the line,

product.1 = 1299.99 

Here, we have changed the tuple value at index 1 to 1299.99.

Note: The tuple index always starts with 0. Hence, the first element of a tuple is present at index 0, not 1.


Named Tuples

In Swift, we can also provide names for each element of the tuple. For example,

var company = (product: "codemy App", version: 2.1)

To access the elements of a named tuple, we can also use these names instead of index numbers.

// access "codemy App"
company.product 

Example: Named Tuple

// create named tuple
var company = (product: "codemy App", version: 2.1)

// access tuple element using name
print("Product:", company.product)
print("Version:", company.version)

Output

Product: codemy App
Version: 2.1

In the above example, we have provided names: product and version to the first and the second element of the tuple.

We have used the . notation and the provided names to access the corresponding values of the tuple.

Note: It is the best practice to use the named tuples as it makes our code more readable.


Swift Nested Tuple

In Swift, we can create a tuple as an element of another tuple. For example,

var alphabets = ("A", "B", "C", ("a", "b", "c"))

Here, we have a tuple ("a", "b", "c") as the third element of the alphabets tuple. This is called a nested tuple.


Example: Nested Tuple

var alphabets = ("A", "B", "C", ("a", "b", "c"))

// access first element
print(alphabets.0)   // prints "A"

// access the third element
print(alphabets.3)

// access nested tuple
print(alphabets.3.0)  // prints "a"

In the above example, notice the line,

print(alphabets.3)

Here, we have first accessed the third element of the alphabets tuple.

Since the third element of the is also a tuple, we have used

alphabets.3.0

to access the first element of the nested tuple.


Add/Remove Elements From Tuple

We cannot add or remove elements from a tuple in Swift. For example,

var company = ("codemy","Apple")

company.2 = "Google"

company.remove("Apple")

print(company)

Output

error: cannot convert value of type '(String, String)'
error: value of tuple type '(String, String)' has no member 'remove'

Here, we have created a tuple with values: "codemy" and "Apple". Now, the type of tuple is fixed to (String, String).

So, when we try to add and remove elements from the tuple, we get errors.

Dictionary Inside a Tuple

In Swift, we can use a dictionary to add an element to a tuple. For example,

var laptopLaunch = ("MacBook", 1299, ["Nepal": "10 PM", "England": "10 AM"])
print(laptopLaunch.2)

laptopLaunch.2["USA"] = "11 AM"

print(laptopLaunch.2)

Output

["Nepal": "10 PM", "England": "10 AM"]
["Nepal": "10 PM", "England": "10 AM", "USA": "11 AM"]

In the above example, the third element of the tuple is a dictionary

["Nepal": "10 PM", "England": "10 AM"]

As we know we can add elements to a dictionary. So, we use the code.

laptopLaunch.2["USA"] = "11 AM"

to add an element inside the dictionary.

This way we are able to add an element to a tuple. And, the type of tuple is still the same (String, String, Dictionary). So, we don't get any errors.

To learn more about dictionary, visit Swift Dictionary