moroz.dev

<< Back to index

Learning iOS and Swift. Day 1: Strings

Abstract

Learning notes from the first day learning iOS and Swift development. Reversing, uppercasing, interpolating strings in Swift.

Mission statement

Learn iOS development for 30 minutes a day, for 30 days.

Rationale

Rationale: I have been procrastinating learning new things for too long, telling myself that I will learn this or that new language once I finish this or that client project. And when I finish some project, there are new client projects to work on and the whole vicious cycle repeats. This time, I decided to go for Swift and iOS, because I have wanted to build mobile apps for a long time (and React Native is not good enough).

What I learned on day 1

let defines immutable variables while var defines mutable variables.

// var defines a mutable variable
// String type is called String
var greeting = "Hello, playground"

// let defines an immutable variable
// Defaults to Int type (i32?)
let x = 10

Floating point numbers are inferred to be Double type by default.

let double = 21.37

Uppercasing and lowercasing strings is simple, using .lowercased() and .uppercased() methods on the string itself:

let uppercaseGreeting = greeting.uppercased()
let lowercaseGreeting = greeting.lowercased()

Reversing a string is more complicated as the .reversed() method returns a vector of Unicode graphemes rather than a string, so we need to coerce it back to String:

let reversed = String("deified".reversed())

Now that we know how to reverse strings, we can write a function that checks if a given string is a palindrome:

// prefixing argument with _ to make it positional
// type annotations for arguments and return types are required
func isPalindrome(_ str: String) -> Bool {
    let reversed = String(str.reversed())
    return reversed == str
}

isPalindrome("deified") // true
isPalindrome("abacad") // false

String interpolation syntax: \( expression ) (backslash followed by the expression in brackets).

// string interpolation

let amount = 21.37
// How much wood would a woodchuck chuck if a woodchuck could chuck wood?
let msg = "Roughly \(amount) metric tonnes."