Slide 1

Slide 1 text

Swift

Slide 2

Slide 2 text

@florianbuerger

Slide 3

Slide 3 text

“Writing code is interactive and fun”

Slide 4

Slide 4 text

“Swift is ready for your next iOS and OS X project”

Slide 5

Slide 5 text

Variablen

Slide 6

Slide 6 text

var // mutable let // constant

Slide 7

Slide 7 text

var // mutable let // constant

Slide 8

Slide 8 text

Typableitung

Slide 9

Slide 9 text

let implicitDouble = 70.0 let explicitDouble:Double = 70

Slide 10

Slide 10 text

Keine (implizite) Konvertierung

Slide 11

Slide 11 text

let first = "First " let nine = 9 let patch = first + nine

Slide 12

Slide 12 text

let first = "First " let nine = 9 let patch = first + nine 'String' is not convertible to 'UInt8'

Slide 13

Slide 13 text

let first = "First " let nine = 9 let patch = first + String(nine) "First 9"

Slide 14

Slide 14 text

Funktionen

Slide 15

Slide 15 text

func sayHello(personName: String) -> String { let greeting = "Hello, " + personName return greeting }

Slide 16

Slide 16 text

func deleteServer(server: Server) -> (Bool, NSError?) { }

Slide 17

Slide 17 text

Optionals

Slide 18

Slide 18 text

var name :String?

Slide 19

Slide 19 text

R.I.P if (!object) { }

Slide 20

Slide 20 text

R.I.P if (!object) { } Bedingung muss Bool zurückliefern

Slide 21

Slide 21 text

var optionalName: String? = "John Appleseed" ! var greeting = "Hello!" if let name = optionalName { greeting = "Hello, \ (name)" }

Slide 22

Slide 22 text

var optionalName: String? = "John Appleseed" ! var greeting = "Hello!" if let name = optionalName { greeting = "Hello, \ (name)" }

Slide 23

Slide 23 text

var optionalName: String? = "John Appleseed" ! var greeting = "Hello!" if let name = optionalName { greeting = "Hello, \ (name)" }

Slide 24

Slide 24 text

class Controller { var title: String } ! Class 'Controller' has no initializers

Slide 25

Slide 25 text

class Controller { var title: String? } 'String?' does not have a member named 'isEmpty'

Slide 26

Slide 26 text

class Controller { var title: String! }

Slide 27

Slide 27 text

var server: Server! Implicitly Unwrapped Optional Type

Slide 28

Slide 28 text

var server: Server!

Slide 29

Slide 29 text

Collections

Slide 30

Slide 30 text

[Int] [1, 2, 3, 4]

Slide 31

Slide 31 text

[key:object] ["key":"value"]

Slide 32

Slide 32 text

var ints = [1,2] ints += 3 ! // [1,2,3]

Slide 33

Slide 33 text

var servers = [Server]() (...) let aServer = (...) servers += aServer

Slide 34

Slide 34 text

class Server: NSObject, Equatable, NSCoding { var gooRequests = 0 var badRequests = 0 var alias: NSString var url: NSURL (...) }

Slide 35

Slide 35 text

var servers = [Server]() (...) let aServer = (...) servers += aServer

Slide 36

Slide 36 text

func == (lhs: Server, rhs: Server) -> Bool { return lhs.alias == rhs.alias && lhs.url == rhs.url }

Slide 37

Slide 37 text

func == (lhs: Server, rhs: Server) -> Bool { return lhs.alias == rhs.alias && lhs.url == rhs.url }

Slide 38

Slide 38 text

func == (lhs: Server, rhs: Server) -> Bool { return lhs.alias == rhs.alias && lhs.url == rhs.url }

Slide 39

Slide 39 text

protocol Equatable { func ==(lhs: Self, rhs: Self) -> Bool }

Slide 40

Slide 40 text

protocol Equatable { func ==(lhs: Self, rhs: Self) -> Bool }

Slide 41

Slide 41 text

protocol Comparable : Equatable { func <=(lhs: Self, rhs: Self) -> Bool func >=(lhs: Self, rhs: Self) -> Bool func >(lhs: Self, rhs: Self) -> Bool }

Slide 42

Slide 42 text

protocol Comparable : Equatable { func <=(lhs: Self, rhs: Self) -> Bool func >=(lhs: Self, rhs: Self) -> Bool func >(lhs: Self, rhs: Self) -> Bool }

Slide 43

Slide 43 text

Closures

Slide 44

Slide 44 text

fuckingclosuresyntax.com

Slide 45

Slide 45 text

// Variable var closureName: (parameterTypes) -> (returnType)

Slide 46

Slide 46 text

// Typealias typealias closureType = (parameterTypes) -> (returnType)

Slide 47

Slide 47 text

// Argument func({(parameterTypes) -> (returnType) in statements})

Slide 48

Slide 48 text

// Parameter array.sort({ (item1: Int, item2: Int) -> Bool in return item1 < item2 })

Slide 49

Slide 49 text

// Parameter array.sort({ (item1: Int, item2: Int) -> Bool in return item1 < item2 })

Slide 50

Slide 50 text

// Parameter array.sort({ (item1: Int, item2: Int) -> Bool in return item1 < item2 })

Slide 51

Slide 51 text

// Parameter array.sort({ (item1: Int, item2: Int) -> Bool in return item1 < item2 })

Slide 52

Slide 52 text

// in kurz array.sort { $0 < $1 }

Slide 53

Slide 53 text

Singleton

Slide 54

Slide 54 text

let _SingletonASharedInstance = SingletonA() ! class SingletonA { ! class var sharedInstance : SingletonA { return _SingletonASharedInstance } ! }

Slide 55

Slide 55 text

Konstante public

Slide 56

Slide 56 text

class Manager { class var sharedInstance :Manager { ! struct Static { static let instance :Manager = ServerManager() } return Static.instance } } https://github.com/hpique/SwiftSingleton

Slide 57

Slide 57 text

structs support static constants

Slide 58

Slide 58 text

let _SingletonASharedInstance = SingletonA() ! class Manager { ! class var sharedInstance :Manager { return _SingletonASharedInstance } ! } Private Konstanten (hoffentlich) in nächster Version

Slide 59

Slide 59 text

Properties

Slide 60

Slide 60 text

class Controller { var title: String = "aTitle" { ! willSet(newTitle) { println("About to set title to \(newTitle)") } ! } }

Slide 61

Slide 61 text

class Controller { (...) didSet { println("Changed title \(oldValue) to \(title)") } (...)

Slide 62

Slide 62 text

! let controller = Controller() controller.title = "Hello" ! // Console output About to set title to Hello Changed title aTitle to Hello

Slide 63

Slide 63 text

“The Swift Programming Language” ! https://itunes.apple.com/de/book/swift- programming-language/id881256329? l=en&mt=11

Slide 64

Slide 64 text

“Using Swift with Cocoa and Objective-C” ! https://itunes.apple.com/de/book/using- swift-cocoa-objective/id888894773?l=en&mt=11

Slide 65

Slide 65 text

Follow the Swift engineers (e.g. Chris Lattner) ! https://twitter.com/olebegemann/status/ 482274302805700608