10 iOS Development Tips for Swift and Xcode

Do you want to become the next top iOS developer? These tips will help you save time and resources so you can spend more time focusing on the parts of code that really matter. This list is in no particular order.

10 Ways to Become a Better iOS Developer

  1. Check if all items meet a criteria.
  2. Use the where keyword.
  3. Swap two variables without a third with tuple destructuring.
  4. Remove the init() method from a structure.
  5. Rename properties.
  6. Use multi-cursor editing.
  7. Extract the code of a method.
  8. Extract to variable.
  9. Add the missing switch boxes.
  10. Use automatic code styling with SwiftLint

1. Check if all items meet a criteria

When you want to check if all the elements satisfy a condition in a collection, you would probably loop through the list and accumulate the result by checking each element separately.

For instance:

let ages = [20, 28, 30, 45]
var allAdults = true
for age in ages {
    if age <= 18 {
        allAdults = false
        break
    }
}
print(allAdults)

Production:

true

However, it’s such a common task that Swift has developed a native function to check if all elements satisfy a condition: the all satisfied() function.

The all satisfied() the function takes a closing as an argument that applies a condition check for each item in the collection.

For example, let’s repeat the above program that checks if all ages are 18+.

let ages = [20, 28, 30, 45]
let allAdults = ages.allSatisfy { $0 >= 18 }
print(allAdults)

Production:

true

To clarify the code, the allSatisfy() the function iterates through the collection and stores each element for $0 one by one to perform the check.

More from ArtturiWhat is the @ symbol in Python and how to use it?

2. Use the Where keyword

In Swift, you can make your code more readable by using the where keyword to check a condition.

Normally you would probably use a if statement to check if a condition is met. For example, let’s iterate over an array of numbers and display only the odd ones.

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers {
    if number % 2 == 0 {
        print(number)
    }
}

Instead, you can use the where keyword to chain the if-check in the declaration of the for loop:

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers where number % 2 == 0{
    print(number)
}

3. Swap two variables without a third with tuple destructuring

In Swift, you can use tuple destructuring to separate the values ​​of a tuple into separate variables.

let (a, b, c) = values

Let’s see how this helps.

Normally you can refer to the elements of a tuple using dot notation by specifying the element name.

For example, given a tuple that has x, yand z coordinates, you can extract these coordinate values ​​to separate the variables into:

let coords = (x: 1, y: 3, z: 2)
let x = coords.x
let y = coords.y
let z = coords.z

You can use tuple destructuring to do the exact same thing with less effort.

let coords = (x: 1, y: 3, z: 2)
let (x, y, z) = coords

An interesting application of this feature is to use tuple destructuring to swap two variables without a third.

For instance:

var a = 1
var b = 2
(a, b) = (b, a)
print(a, b)

Production:

2 1

This is a classic interview and exam question. Be sure to nail it!

More tips for software developers10 myths about programming and software development

4. Remove the init() method from a struct

If you’ve dealt with classes in Swift, you know you need to implement the init() method to initialize class instances.

This is also possible with structures. However, this is not necessary if you only want to assign initial values ​​to the properties of the structure.

Let’s create a fruit structure with a init() method.

struct Fruit {
    let name: String
    let color: String
    init(name: String, color: String) {
        self.name = name
        self.color = color
    }
}
var banana = Fruit(name: "Banana", color: "Yellow")
print(banana.name, banana.color)

This works because structs automatically create a member initialization method for the struct.

Remember that this does not apply to courses! You should always implement the init() method in a class in Swift.

8 Swift tips to quickly improve your Swift programming!

5. Rename Properties – Xcode Refactoring Tool

In Swift, there is an amazing built-in refactoring tool. You can use it to avoid some repetitive manual work.

The following tips are related to using the Xcode Refactoring Tool.

Renaming a property using the Rename function

The rename The feature finds every place where highlighted text appears and renames it as desired.

Change all numeric variable references wherever you use the rename function.

Modify all in scope

You can also rename a property in Swift in a specific file by clicking on the command and renaming the property like this:

This is different from the rename function in that it only changes the property name in the current file, not other places in the code base.

Looking for more tutorials? We have you.Create a React and TypeScript Application – A Quick Guide

6. Use Multi-Cursor Editing – Xcode Refactoring Tool

Did you know that you can add multiple cursors in your Swift code using Xcode’s multi-cursor feature?

To activate the multi-cursor function, press shift + control + left mouse click.

You can easily edit code with the multi-cursor in these four ways:

  • shift + control + left mouse click creates a new cursor on each click.
  • shift + control + arrow up creates a new cursor one line above.
  • shift + control + arrow down creates a new cursor on a line below.
  • option + mouse drag creates new cursors on new lines wherever you drag the cursor.

7. Extract code to a method – Xcode Refactoring Tool

To improve code quality, you should extract longer pieces of code into separate methods.

To do this, you can copy-paste a piece of code to a function manually.

Since this is such a common practice, there is now a built-in refactoring feature called extract to method in Xcode that does the job.

For instance:

8. Extract to Variable – Xcode Refactoring Tool

Similar to the previous example where you extracted a piece of code into a separate method, you can extract an expression into a variable.

To do this, use the built-in extract to variable function in Xcode.

For instance:

You can also extract all identical expressions into a separate variable using the extract all occurrences function.

Find occurrences of UserDefaults.standard.array(forKey: “Names”)! and create a variable for them.

9. Add Missing Switch Cases – Xcode Refactoring Tool

If you use the default case in a to change statement the Swift compiler does not show errors if a case is not covered. This means that there may be a Case you should check but you forgot to.

This is where the built-in Xcode refactoring tool helps. You can use it to expand missing cases.

For instance:

10. Use automatic code styling with SwiftLint

Understanding the code can be difficult. To make the process as smooth as possible, the code should be of high quality. One way to enforce code quality is to follow some common code style guidelines.

But who is there to make sure your code adheres to these best practices? And what are these best practices even?

This is where a linter helps you. You can use a linter to enforce common coding style and best practices. You can also specify team-specific best practices for your project.

Linters can:

  • Show warnings
  • Fix code automatically to silence warnings

Here is an example of a linter showing warnings in code:

iOS-development-tips-swift-xcode

In Swift, the most common linter is called SwiftLint. It’s easy to set up and you can learn how to do it by five minutes. A linter is something you are 100% likely to use if you are developing software on a team.

Hope you found something new and interesting in your development routine.

Happy coding!

Comments are closed.