Data Types
String
Int
Bool
Double
Float
Character
Variables & Constants
// Declaring
var myVariable:DataType
let myConstant:DataType
//Inferred Data Type
var myDouble = 1.0
// Optionals
var optionalVar:Double? = nil
// Safely "unwrap" safely an optional.
if let myFinalDouble = optionalVar {
/*
The sole purpose of it is to test if an optional variable contains
an actual value and bind the non-optional form to a temporary variable.
*/
}
/* Lazy variables:
Delays the creation of an object or some other expensive process until it’s needed
*/
lazy var refreshControl: UIRefreshControl = {
let rc = UIRefreshControl()
rc.attributedTitle = NSAttributedString(string: "Fetching...")
return rc
}()
Control Flow
// Simple If
if condition {
} else if condition {
} else {
}
// Swtich
switch value {
case value:
case value:
default:
}
Loops
for variable in lower...upper {
// ..
}
while condition {
// ..
}
repeat {
// ..
} while condition
Enums
enum PlayerType: Int {
case rogue = 1
case fighter = 2
case cleric = 3
}
var type = PlayerType.rogue
Declaring Functions / Methods
func myFunction(arg param:DataType) -> ReturnType {
}
Classes
class MyClass : SuperClass, OptionalProtocol1, OptionalProtocol2 {
var myProperty:String
var myOptionalProperty:String? // More properties...
// Only need override if subclassing
override init() {
myProperty = "Foo"
}
func sayHi(name: String) -> Void {
print("Hello \(name)!!")
}
// more methods ...
}
// Creating/Using an Instance
var a = MyClass()
print(a.myProperty)
a.sayHi(name: "Daniel")
Arrays
// Declares an empty array of Strings
var myArray = [String]()
// Declares
var myArray:[String] = ["Hello", "Worldwide"]
myArray.append("World")
// Iterates
for word in myArray {
print("The word is \(word)")
}
var world = myArray[2]
Dictionaries
// Declares
var myDict:[String: String] = ["name": "iPhone", "version": "7", "os": "iOS"]
// Iteration
for (myKey, myValue) in myDict {
print("type: \(myKey), muppet: \(myValue)")
}
Extending
/*
Extends the Collection type (array), to add a new function "decode"
Only when is an array of JSON typee
*/
extension Collection where Iterator.Element == JSON {
// Uses generics to pickup the type "T" form the left side of the declaration
func decode() throws -> [T] {
return try map{try T(json: $0)}
}
}
Bootstrap application w/o Storyboard
// AppDelegate.Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions
launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
let homeController = MyViewController()
let navigationControler = UINavigationController(rootViewController: homeController)
window!.rootViewController = navigationControler
window!.makeKeyAndVisible()
return true
}