Concepts for Swift
Swift is a powerful and intuitive programming language developed by Apple for building iOS, macOS, watchOS, and tvOS applications. Introduced in 2014, Swift offers modern features like type inference, optionals, closures, and generics, which enhance developer productivity and code safety. Its syntax is concise and expressive, drawing inspiration from various programming languages such as Objective-C, Rust, and Python. Swift also provides strong support for functional programming paradigms, making it suitable for building robust, scalable, and high-performance applications. With its interoperability with Objective-C and extensive standard library, Swift has quickly become a preferred choice for iOS and macOS development, offering speed, safety, and ease of use to developers.
Print Text
print("Hello World!");Comments
// one line comment /* multi line comment */
Variables
var carCount = 2; var name: String = "Joe"; // constant variable let isPurple: Bool = true;
Data Types
var carCount: Int = 2; var age: UInt8 = 15; var seaLevel: Int16 = -10000; var usBudget: Int64 = 11000000000; var lightSpeed: UInt64 = 11799312874; var myGPA: Float = 3.45; var piValue: Double = 3.14159265; var isMale: Bool = true; var lastLetter: Character = "Z"; var myName: String = "Joe";
Math Op
var carCount = 6; var truckCount = 3; var total = carCount + truckCount; print(total); var subtract = carCount - truckCount; print(subtract); var multiple = carCount * truckCount; print(multiple); var divisible = carCount / truckCount; print(divisible); // performs division and gets remainder which is 0 var modulo = carCount % truckCount; print(modulo);
Math Functions
import Foundation let power = pow(3, 6); print(power); let root = sqrt(16); print(root); let floorVal = floor(3.14); print(floorVal); let ceilVal = ceil(4.3); print(ceilVal); let roundVal = round(3.4); print(roundVal); // random number from 0 to 100 let ranNum = Int.random(in: 0..< 101) print(ranNum);
If/Else
let carCount = 6; if carCount > 3 { print("More than three cars"); } else if carCount == 3) { print("Equal to three cars"); } else { print("Less than three cars"); }Ternary
let carCount = 3 let result = (carCount > 2) ? "Yes" : "No"; print(result);
Switch
let carCount = 3 switch carCount { case 1: print("One car"); case 2: print("Two cars"); case 3: print("Three cars"); default: print("More than three"); }Functions
func handleCars(cars:Int, wheels:Int) -> Int { let total:Int = cars * wheels; return total; } let result:Int = handleCars(cars:3, wheels:4); print(result);Interpolation
let name = "Joe"; let car = "Mazda"; let result = "\(name) drives a \(car)"; print(result);
Type Casting
import Foundation func squareA(length:Int) -> String { let result = pow(Double(length), 2); return String(result); } let squareL = "4"; let convertedVal:Int = Int(squareL) ?? 0; let area = squareA(length:convertedVal); print(area);Date and Time
// epoch time let milliseconds = Date().timeIntervalSince1970 * 1000; print(milliseconds); let currentDate = Date(); let calendar = Calendar.current; // current year let year = calendar.component(.year, from: currentDate); print(year); // current month let month = calendar.component(.month, from: currentDate); print(month); let day = calendar.component(.day, from: currentDate); // formatted date let formatted = "\(month)/\(day)/\(year)"; print(formatted);
Classes
class Cars { var carList:Array<String> = [] func addCar(car:String) { self.carList.append(car); } func removeFirst() { self.carList.removeFirst(); } func getFirstVal()->String { if (self.carList.count > 0) { return self.carList[0]; } return ""; } } let newList:Cars = Cars(); newList.addCar(car: "Honda"); newList.addCar(car: "Mazda"); newList.addCar(car: "Toyota"); newList.removeFirst(); var firstCar:String = newList.getFirstVal(); print(firstCar);Inheritance
class User { var username:String; var password:String; init(username: String, password: String) { self.username = username self.password = password } } class Admin : User { var id:String; init( username: String, password: String, id:String) { self.id = id super.init( username: username, password: password ) } func fetchUsername() -> String { return self.username } func getAdminID() -> String { return self.id } } var newAdmin = Admin( username: "alpha0", password: "pw1", id: "1FE" ) print(newAdmin.fetchUsername()) print(newAdmin.getAdminID())Method Overload
class UserForm { var formA:String = "alpha"; var formB:String = "beta"; var formC:String = "gamma"; var formD:String = "epsilon"; func getForm(age: Int) -> String { if (age > 65) { return formA; } return formB; } func getForm(id: String) -> String { if (id == "1FE") { return formA; } return formC; } func getForm( isMilitary: Bool, isNasa: Bool ) -> String { if (isMilitary || isNasa) { return formD; } return formA; } } var form = UserForm(); var myAge = 67; var myId = "1FE"; var veteran = false; var nasa = true; var form1 = form.getForm(age: myAge); var form2 = form.getForm(id: myId); var form3 = form.getForm( isMilitary: veteran, isNasa: nasa ); print(form1); print(form2); print(form3);Abstract Class
// No Native Support or Implementation
Static Class
import Foundation struct Helper { static func CircleA(radius: Int) -> Double { return 3.14 * pow(Double(radius), 2.0); } static func SquareA(length: Int) -> Double { return pow(Double(length), 2.0); } } var circle = Helper.CircleA(radius: 3); print(circle); var square = Helper.SquareA(length: 4); print(square );Arrays/Lists
var names = ["Joe", "Sam", "David"]; names[1] = "Tom"; // constant variable let name = names[1]; let numItems = names.count; print(name); print(numItems);
Array Methods
var cars = ["Honda", "Mazda", "Toyota"]; // adds element ot end of aray cars.append("Ford"); print(cars); // check to see if element exists in arrayu print(cars.contains("Ford")); // removes first element var array1 = cars.dropFirst(); print(array1); // removes second element var array2 = cars.dropLast(); print(array2); // inserts element at index 1 cars.insert("Ford", at: 1) print(cars); // removes element at index 1 cars.remove(at:1); print(cars);Concatenation
let carsListKr = ["Kia", "Hyundai", "Daewoo"]; let carsListJp = ["Honda", "Mazda", "Toyota"]; let combined = carsListKr + carsListJp; print(combined[1]); print(combined[4]);
Sort Method
var ages = [5, 3, 1, 6, 7, 4, 19] ages.sort() print(ages)
Objects
class User { var first:String; var last:String; var age:Int; var retired:Bool; var carBrands:Array<String>; init( first:String, last:String, age:Int, retired:Bool, carBrands:Array<String> ) { self.first = first; self.last = last; self.age = age; self.retired = retired; self.carBrands = carBrands; } func fullName() -> String { return "\(first) \(last)"; } } var user = User( first: "Joe", last: "Doe", age: 23, retired: false, carBrands: ["Mazda", "Toyota"] ) print(user.first); print(user.carBrands[1]); print(user.fullName());Maps (Key/Value)
var carMap = [String: String]() carMap["Joe"] = "Toyota" carMap["Bob"] = "Mazda" carMap["Tom"] = "Ford" var selected:String = carMap["Tom"] ?? "" print(selected); carMap.removeValue(forKey: "Tom") let keyCheck:Bool = carMap["Tom"] != nil print(keyCheck)
Sets
var cars = Set<String>(); cars.insert("Mazda"); cars.insert("Toyota"); cars.insert("Honda"); print(cars.contains("Honda")); cars.remove("Honda"); print(cars.contains("Honda"));Stack
var cars:Array<String> = []; cars.append("Mazda"); cars.append("Toyota"); cars.append("Honda"); print(cars[cars.count - 1]); cars.removeLast(); print(cars[cars.count - 1]);Queues
var cars:Array<String> = []; cars.append("Mazda"); cars.append("Toyota"); cars.append("Honda"); print(cars[0]); cars.removeFirst(); print(cars[0]);Linked List
class Node { var value: String; var next: Node? = nil; init(value:String) { self.value = value; } } class LinkedList { var head:Node? = nil; func add(Value:String) { let newNode = Node(value:Value) if (self.head == nil) { self.head = newNode; } else { var current:Node? = self.head; while(current?.next != nil) { current = current?.next; } current?.next = newNode; } } func returnHead() -> String { return self.head?.value ?? ""; } func traverse() { var current:Node? = self.head; while(current != nil) { print(current?.value ?? ""); current = current?.next; } } } var carList = LinkedList(); carList.add(Value: "Mazda"); carList.add(Value: "Toyota"); carList.add(Value: "Honda"); print(carList.returnHead()); carList.traverse();Graphs
class Graph { var graphMap = [String: Array<String>](); func addNode(val:String) { graphMap[val] = []; } func addVertices(node1:String, node2:String) { if (graphMap[node1] == nil) { graphMap[node1] = []; } if (graphMap[node2] == nil) { graphMap[node2] = []; } graphMap[node1]?.append(node2); graphMap[node2]?.append(node1); } func breadthTraverse(start:String) { var queue = [start]; var visited = [String: Bool](); visited[start] = true; while(queue.count > 0) { let currentVal = queue[0]; print(currentVal); queue.removeFirst(); let tempArr = graphMap[currentVal] ?? []; for tempVal in tempArr { if visited[tempVal] == nil { queue.append(tempVal); visited[tempVal] = true; } } } } func depthTraverse(start:String) { var stack = [start]; var visited = [String: Bool](); visited[start] = true; while(stack.count > 0) { let currentVal = stack[stack.count - 1]; print(currentVal); stack.removeLast(); let tempArr = graphMap[currentVal] ?? []; for tempVal in tempArr { if visited[tempVal] == nil { stack.append(tempVal); visited[tempVal] = true; } } } } } var newGraph = Graph(); newGraph.addNode(val:"a"); newGraph.addVertices(node1:"a", node2:"b"); newGraph.addVertices(node1:"a", node2:"c"); newGraph.addVertices(node1:"b", node2:"d"); newGraph.addVertices(node1:"b", node2:"e"); newGraph.addVertices(node1:"d", node2:"f"); newGraph.addVertices(node1:"d", node2:"g"); newGraph.addVertices(node1:"d", node2:"h"); newGraph.addVertices(node1:"e", node2:"i"); newGraph.addVertices(node1:"e", node2:"j"); newGraph.breadthTraverse(start:"a"); newGraph.depthTraverse(start:"a");For Loops
var names = ["Joe", "Alex", "Bob"]; for name in names { print(name); }While Loops
var carList = ["Mazda", "Toyota", "Honda"]; while(carList.count > 0) { print(carList[0]); carList.removeFirst(); } print(carList.count)Loop Breaks
var cars = ["Toyota", "Honda", "Mazda"]; for (i, car) in cars.enumerated() { if (car == "Honda") { print("Found at index \(i)") break; } print("Visited index \(i)") }Recursion
func getSum(arr: Array<Int>) -> Int { var copy = arr; if copy.count == 0 { return 0; } let val = copy[0]; copy.removeFirst(); return val + getSum(arr:copy); } var testArr = [1, 2, 4, 5]; var sum = getSum(arr: testArr); print(sum)Regex Words
var phrase = "I am legend"; var pattern = try Regex("\\w+"); if let result = phrase.firstMatch(of: pattern) { print(result.0); }Regex Numbers
var phrase = "I am 23"; var pattern = try Regex("\\d+"); if let result = phrase.firstMatch(of: pattern) { print(result.0); }Regex Test
let phrase = "Bob Lee"; let pattern = "Lee"; var result: Bool; if phrase.contains(pattern) { result = true; } else { result = false; } print(result);Regex Characters
var phrase = "##I am legend##"; var pattern = try Regex("#+\\w+"); if let result = phrase.firstMatch(of: pattern) { print(result.0); }