Post on 15-Jan-2015
description
Swift Programming in
iOSDeveloping Apps using Swift
App Extensions - for sharing, photo editing, storage, custom keyboards (yay!) and much more
Touch ID - forget registration and login, Touch ID authentication is here
Games - many improvements to SpriteKit, SceneKit, OpenGL and a new framework Metal - for high performance in games
Health Kit - a new framework for managing health-related info. Make way for revolutionary health apps
iOS 8- New Features
Home Kit - communicate with connected devices (you don’t need to go to the switch now)
Handoff - seamless continuity of activities across devices
Photos - there is so much more you can do with Photos now And much more
Sharing documents between apps
More inclusive notifications
Better search
iOS 8- New Features
Why Swift?
What Apple saysFast - performance wise, Swift is much faster than Objective-C
Modern - borrows from Haskell, Ruby, Javascript - skill barrier greatly lowered
Interactive - a Playground allows programmers to experiment with Swift code and see results immediately - no building and running
The announcement of Swift got mixed reactions
What developers say
Show me the code!
Some key pointsDeclaration and implementation are in the same file (no .h and .m files)
Project size is largely reduced with Swift
Swift auto-detects data types
The code does not use semi-colons
Braces are compulsory for if-else conditions
Variables (and type inference)
//variablesvar name: String = "Jane Doe"var year: Int = 2014var isFast: Bool = true
//Data type detectionname = "John Doe"year = 2016isFast = false
//Data type detectionvar name = "Jane Doe"var year = 2014var isFast = true
//constants
let name: String = "Jane Doe"
let year: Int = 2014
let isFast: Bool = true
//These will give an error
name = "John Doe"
year = 2016
isFast = false
Constants
let hello = "Hello"
let world = "World"
let firstString = hello + " " + world //Will print Hello World
let a = 4, b = 5
println ("\(a) * \(b) = \(a * b)") //Will print 4 * 5 = 20
isFast = false
String Operations
//Typed arrays
var typedList: String[] = ["Yes", "No", "Cancel"]
typedList += ["OK"] //typedList - Yes, No, Cancel, OK
//Mixed objects in an array
var mixedList: String[] = ["India", 40.5, 3, false]
//Dictionaries
var comments = ["article1":4, "article2":6, "article3":0]
comments["article4"] = 5;
comments += ["article5":2, "article6":8]
Arrays and Dictionaries
//Arrays
typedList.insert("Later", atIndex:0) //typedList - Later, Yes...
typedList.removeAtIndex(0) //typedList - Yes, No...
typedList.append("Later") //typedList - Yes, No...Later
typedList.removeLast()
//Dictionaries
let numberOfComments = comments["article4"] //will be 5
Accessing Collections
//Functions return more than 1 values as tuples
let result = (404, "Not found")
let code = result.0 //will be 404
let status = result.1 //will be “Not found”
//Defining functions
func getStatus (var1:String, var2:String)->(Int, String)
//Calling function
var result:(code:Int, status:String) =
self.getStatus(var1: "googleegoo.com", var2: "http")
print("Result is \(result.code) - \(result.status)")
Tuples
//if statementsif val == 0 { //Some code here} else if val == 1 { //Some code here} else { //Some code here}
//switch casesswitch val { case 1, 3, 5: println ("odd"); case: 2, 4, 6: println ("even"); case: 7...9: println ("7, 8, 9"); default: println ("other");}
Conditions
Conditions
//switch with where clause and tuplesswitch rgb { ... case let (r,g,b) where r==g && g==b: println("GREY"); default: println ("colored");}
//while loopwhile !finished {//Some code here}
//for loop and for infor var i=0; i<10; i++ {//Some code here}for num in 1...10 {//iterate from 1 to 10}for num in 1..10 {//iterate from 1 to 9, not 10 - just 2 dots here}
Playground
Run a project without compiling
Run as you type (has its disadvantages)
Error symbols show as you type your code
Quick look button shows graphical display for a piece of code
There’s a lot more to Swift
Classes and structures, Protocols
Optional and non-optional parameters
Properties and methods
Getters and Setters
Property Observers
Closures
Designated and convenience initializers
Labeled statements
Lazy stored properties
Downcasting
Class methods
Extensions
There’s a lot more to Swift
Mapping Obj-C to Swift- changes to func
+ changes to class func
# define changes to let
#pragma changes to //MARK :
No init and initWith
Change complex macros to functions
let myCustomColor = UIColor(red:0.5,green:0.5,blue:0.0,alpha:1.0)
References
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/
http://www.raywenderlich.com/74438/swift-tutorial-a-quick-start
https://www.bloc.io/swiftris-build-your-first-ios-game-with-swift
What to get your iOS app developed with
Swift?Contact us for a FREE 15-minute consultation
http://newgenapps.com/contact/
Skype: lata.nga / newgenapps
Phone: +1 415 800 4445