Rx in the real world. 1 Rob Ciolli

Size: px
Start display at page:

Download "Rx in the real world. 1 Rob Ciolli"

Transcription

1 Rx in the real world 1 Rob Ciolli

2 2 Rob Ciolli

3 3 Rob Ciolli

4 The App 4 Rob Ciolli

5 Quick architecture overview 5 Rob Ciolli

6 MV - WTF 6 Rob Ciolli

7 Model Simple, immutable data struct returned from DB or APIs 7 Rob Ciolli

8 View UI layout as defined in storyboard file 8 Rob Ciolli

9 Controller Regular Cocoa ViewController protocol ViewControllerProtocol: class {... associatedtype ViewModelType func recieve(viewmodel: ViewModelType) 9 Rob Ciolli

10 Presenter import UIKit protocol PresenterProtocol { associatedtype ViewControllerType: UIViewController func makeviewcontroller() -> ViewControllerType 10 Rob Ciolli

11 ViewModel protocol ViewModelDelegateProtocol { protocol ViewModelProtocol { associatedtype DelegateType //: ViewModelDelegateProtocol var delegate: DelegateType { get init(delegate: DelegateType) class BaseViewModel<T> : ViewModelProtocol { let delegate: T required init(delegate: T) { self.delegate = delegate 11 Rob Ciolli

12 Example 1 Beer Detail Page 12 Rob Ciolli

13 Beer Model struct Beer { let id: Int let name: String let style: String let brewry: String let abv: Double let ibu: Double let description: String let image: String 13 Rob Ciolli

14 Observable next complete error 14 Rob Ciolli

15 Observer 'Listens' to an Observable implements onnext, oncompleted, onerror subscribing or binding returns a Disposable DisposeBag pattern 15 Rob Ciolli

16 Observable example let observable = Observable<String>.create { observer in o.onnext("beer") o.onnext("is") o.onnext("good") o.oncompleted() return Disposables.create() 16 Rob Ciolli

17 Observer example let disposebag = DisposeBag() observable.subscribe( onnext: { s in print(s), onerror: { _ in print("wtf"), oncompleted: { _ in print("done") ).disposed(by: disposebag) 17 Rob Ciolli

18 Mutating the streams Observable Operators Transform => Map & FlatMap... Filter => Filter / Debounce / Skip / Take Combine => Zip / CombineLatest Error Handling => Retry / Catch 18 Rob Ciolli

19 Data Layer import RxSwift protocol Datalayer { func requestallbeers() -> Observable<[Beer]> 19 Rob Ciolli

20 DetailPresenter struct DetailPresenter { let beer: Beer init(beer: Beer) { self.beer = beer extension DetailPresenter: PresenterProtocol {... extension DetailPresenter: DetailViewModelDelegateProtocol { 20 Rob Ciolli

21 DetailViewModel protocol DetailViewModelDelegateProtocol: ViewModelDelegateProtocol { var beer: Beer { get class DetailViewModel: BaseViewModel<DetailViewModelDelegateProtocol> { let name = Variable<String?>("")... required init(delegate: DetailViewModelDelegateProtocol) { super.init(delegate: delegate) name.value = beer.name Rob Ciolli

22 Map 22 Rob Ciolli

23 DetailViewController class DetailViewController: UIViewController, ViewControllerProtocol {... let disposebag = weak var namelabel: weak var imageview: UIImageView! override func viewdidload() { super.viewdidload() viewmodel.name.asobservable().bindto(namelabel.rx.text).disposed(by: disposebag) viewmodel.image.asobservable().map { UIImage(named: $0)!.bindTo(imageView.rx.image).disposed(by: disposebag) 23 Rob Ciolli

24 Show me the code Example 1 - Beer Detail Page 24 Rob Ciolli

25 ! " Binding is too verbose Only displays one piece of data Not really reactive 25 Rob Ciolli

26 Example 1b Beer Detail Page (again...) heaps more reactive 26 Rob Ciolli

27 Binding 27 Rob Ciolli

28 what if... viewmodel.name.asobservable().bindto(namelabel.rx.text) looked like namelabel.rx.text <- viewmodel.name 28 Rob Ciolli

29 ... and you could add all disposables to disposebag in one call... disposebag.dispose([ namelabel.rx.text <- viewmodel.name, stylelabel.rx.text <- viewmodel.style, brewrylabel.rx.text <- viewmodel.brewry, ]) 29 Rob Ciolli

30 <- operator infix operator <- func <- <T>(property: ControlProperty<T>, variable: Variable<T>) -> Disposable { return variable.asobservable().bind(to: property) 30 Rob Ciolli

31 DisposeBag extension DisposeBag { func dispose(_ disposables: [Disposable]) { disposables.foreach { [unowned self] disposable in self.insert(disposable) 31 Rob Ciolli

32 ViewModel Requirements Page through [Beer] protocol DetailViewModelDelegateProtocol: ViewModelDelegateProtocol { var beers: Observable<[Beer]> { get Rob Ciolli

33 ViewModel Requirements React to Next/Prev let next = Variable<()>() let index: Variable<Int>... next.asobservable().subscribe(onnext: onnext)... private func onnext() { index.value += 1 33 Rob Ciolli

34 Combine Latest 34 Rob Ciolli

35 ViewModel Requirements Be heaps more reactive Observable.combineLatest(delegate.beers, index.asobservable(), resultselector: selectbeer) 35 Rob Ciolli

36 ViewModel Requirements Control enabled state of UIButton extension UIButton { var rx_driveenable: AnyObserver<Bool> { return UIBindingObserver(UIElement: self) { button, enabled in button.isuserinteractionenabled = enabled.asobserver() 36 Rob Ciolli

37 Show me the code (... and tests) Example 1b - Beer Detail Page 37 Rob Ciolli

38 Example 2 Sign in Page capture user input validate input call api and handle response 38 Rob Ciolli

39 Sign in ViewModel initialise protocol SigninViewModelDelegateProtocol: ViewModelDelegateProtocol { func signin(username: String, password: String) -> Observable<Void> class SigninViewModel: BaseViewModel<SigninViewModelDelegateProtocol> {... let username = Variable<String?>(nil) let password = Variable<String?>(nil) let signintapped = Variable<()>() let error = Variable<String?>(nil) let signedin = Variable<()>() 39 Rob Ciolli

40 Sign in ViewModel call api signintapped.asobservable().subscribe(onnext: signin).disposed(by: disposebag) private func signin() { guard let username = username.value, let password = password.value else { return delegate.signin(username: username, password: password).subscribe(onnext: onsignedin, onerror: onsigninerror).disposed(by: disposebag) private func onsignedin() { signedin.value = () private func onsigninerror(_: Error) { error.value = "Error signing in" 40 Rob Ciolli

41 Sign in ViewModel input validation var signinenabled: Observable<Bool> { return Observable.combineLatest(username.asObservable(), password.asobservable(), resultselector: inputisvalid) private func inputisvalid(username: String?, password:string?) -> Bool { guard let username = username, let password = password else { return false return!username.isempty &&!password.isempty 41 Rob Ciolli

42 Show me the code Example 2 - Beer Sign in 42 Rob Ciolli

43 Example 3 Beer ListView filter list show detail view 43 Rob Ciolli

44 List ViewModel let searchvariable = Variable<String?>("") let itemtapped = Variable<Int>(-1) required init(delegate: ListViewModelDelegateProtocol) {... itemtapped.asobservable().skip(1).subscribe(onnext: onitemtapped).disposed(by: disposebag) 44 Rob Ciolli

45 Filter 45 Rob Ciolli

46 List ViewModel func filteredbeers() -> Observable<[Beer]> { let search = searchvariable.asobservable() return Observable.combineLatest(delegate.beers, search, resultselector: filterbeers) private func filterbeers(beers: [Beer], search: String?) -> [Beer] { guard let search = search else { return beers return beers.filter { search.isempty $0.name.lowercased().contains(search.lowercased()) 46 Rob Ciolli

47 List ViewModel private func onitemtapped(index: Int) { delegate.showdetail(beers: filteredbeers(), index: index) 47 Rob Ciolli

48 List ViewController viewmodel.filteredbeers().debounce(0.3, scheduler: MainScheduler.instance).bind(to: tableview.rx.items( cellidentifier: "Cell", celltype: UITableViewCell.self), curriedargument: initialisecell) 48 Rob Ciolli

49 Show me the code Example 3 - Beer List 49 Rob Ciolli

50 Wash up single responsibility is good Rx makes us think about data flow infix operators and swift extensions are cool 50 Rob Ciolli

51 Resources http: /reactivex.io/ http: /rxmarbles.com/ https: /github.com/reactivex/rxswift 51 Rob Ciolli

52 Thank <- (, ) 52 Rob Ciolli

Chapter 22 TableView TableView. TableView ios. ViewController. Cell TableViewCell TableView

Chapter 22 TableView TableView. TableView ios. ViewController. Cell TableViewCell TableView Chapter 22 TableView TableView Android TableView ListView App 22.1 TableView TableView Storyboard Table View ViewController TableView ios Cell TableViewCell TableView Table View Cell Cell ImageView (imageview)

More information

App. Chapter 19 App. App (ViewController) App. Single View Application Single View Application View. (View Controller)

App. Chapter 19 App. App (ViewController) App. Single View Application Single View Application View. (View Controller) Chapter 19 App App (ViewController) App 19.1 App App Single View Application Single View Application View Controller View Controller Label Button Button (View Controller) 2 View Controller Utility Area

More information

Cocoa Touch Best Practices

Cocoa Touch Best Practices App Frameworks #WWDC15 Cocoa Touch Best Practices Session 231 Luke Hiesterman UIKit Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Tables. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder

Tables. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Tables Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Outline Table View Controller Table View Table Cells

More information

Collection Views. Dr. Sarah Abraham

Collection Views. Dr. Sarah Abraham Collection Views Dr. Sarah Abraham University of Texas at Austin CS329e Fall 2016 What is a Collection View? Presents an ordered set of data items in a flexible layout Subclass of UIScrollView (like UITableView)

More information

} override func didreceivememorywarning() { 26 super.didreceivememorywarning() 27 } 28 } Pause Stop

} override func didreceivememorywarning() { 26 super.didreceivememorywarning() 27 } 28 } Pause Stop Chapter 30 30.1 App App MP3 Don t Download This Song [1] Finder MP3 Xcode UI 1 import UIKit 2 import AVFoundation 3 4 class ViewController: UIViewController { 5 6 var player: AVAudioPlayer? 7 8 override

More information

Implementing UI Designs in Interface Builder

Implementing UI Designs in Interface Builder Developer Tools #WWDC15 Implementing UI Designs in Interface Builder Session 407 Kevin Cathey Interface Builder Engineer Tony Ricciardi Interface Builder Engineer 2015 Apple Inc. All rights reserved. Redistribution

More information

Generic Programming with Protocol in Swift. ios

Generic Programming with Protocol in Swift. ios Generic Programming with Protocol in Swift ios Generic Programming with Protocol in Swift ios func swapint(inout a: Int, inout _ b: Int) { let tmp = a a = b b = tmp var someint = 1 var anotherint = 5

More information

UI Design and Storyboarding

UI Design and Storyboarding UI Design and Storyboarding Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Outline Model-View-Controller

More information

Lecture 8 Demo Code: Cassini Multithreading

Lecture 8 Demo Code: Cassini Multithreading Lecture 8 Demo Code: Cassini Multithreading Objective Included below is the source code for the demo in lecture. It is provided under the same Creative Commons licensing as the rest of CS193p s course

More information

INTRODUCTION TO ARCHITECTING YOUR IOS APP

INTRODUCTION TO ARCHITECTING YOUR IOS APP INTRODUCTION TO ARCHITECTING YOUR IOS APP AGENDA Goals of software architecture Design guidelines Practical tips GOALS OF SOFTWARE ARCHITECTURE GOALS OF SOFTWARE ARCHITECTURE Code is comprehensible for

More information

Mobile Development - Lab 2

Mobile Development - Lab 2 Mobile Development - Lab 2 Objectives Illustrate the delegation mechanism through examples Use a simple Web service Show how to simply make a hybrid app Display data with a grid layout Delegation pattern

More information

Introductory ios Development

Introductory ios Development Introductory ios Development 152-164 Unit 5 - Multi-View Apps Quick Links & Text References What is a Delegate? What is a Protocol? Delegates, Protocols and TableViews Creating a Master-Detail App Modifying

More information

ITP 342 Mobile App Dev. Collection View

ITP 342 Mobile App Dev. Collection View ITP 342 Mobile App Dev Collection View Collection View A collection view manages an ordered collection of items and presents them in a customizable layout. A collection view: Can contain optional views

More information

A Mad Libs app that you will navigate through 3 UIViewControllers to add text that will be shown in a story on the fourth UIViewController.

A Mad Libs app that you will navigate through 3 UIViewControllers to add text that will be shown in a story on the fourth UIViewController. WordPlay App: A Mad Libs app that you will navigate through 3 UIViewControllers to add text that will be shown in a story on the fourth UIViewController. Create a new project Create a new Xcode project

More information

Document Version Date: 1st March, 2015

Document Version Date: 1st March, 2015 7 Minute Fitness: ios(swift) Application Document Version 1.0.1 Date: 1st March, 2015 2 [7 MINUTE FITNESS: APP DOCUMENTATION] Important Notes:... 5 AppDelegate Class Reference... 6 Tasks... 6 Instance

More information

Building the App - Part 5 - Adding a Link

Building the App - Part 5 - Adding a Link Unit 4 - Coding For Your App Copy and Paste the code below exactly where the tutorials tell you. DO NOT COPY TEXT IN RED. Building the App - Part 5 - Adding a Link XCODE 7 @IBAction func Button1(_ sender:

More information

Building Mapping Apps for ios With Swift

Building Mapping Apps for ios With Swift Building Mapping Apps for ios With Swift Jeff Linwood This book is for sale at http://leanpub.com/buildingmappingappsforioswithswift This version was published on 2017-09-09 This is a Leanpub book. Leanpub

More information

Enhancing your apps for the next dimension of touch

Enhancing your apps for the next dimension of touch App Frameworks #WWDC16 A Peek at 3D Touch Enhancing your apps for the next dimension of touch Session 228 Tyler Fox UIKit Frameworks Engineer Peter Hajas UIKit Frameworks Engineer 2016 Apple Inc. All rights

More information

Stream iphone Sensor Data to Adafruit IO

Stream iphone Sensor Data to Adafruit IO Stream iphone Sensor Data to Adafruit IO Created by Trevor Beaton Last updated on 2019-01-22 04:07:41 PM UTC Guide Contents Guide Contents Overview In this learn guide we will: Before we start... Downloading

More information

News- ipad: ios(swift) Application

News- ipad: ios(swift) Application News- ipad: ios(swift) Application Document Version 1.0.1 Date: 9 th Nov, 2014 2 [NEWS- IPAD: APP DOCUMENTATION] Important Notes:... 6 AppDelegate Class Reference... 7 Tasks... 7 Instance Methods... 7

More information

ITP 342 Mobile App Dev. Connections

ITP 342 Mobile App Dev. Connections ITP 342 Mobile App Dev Connections User Interface Interactions First project displayed information to the user, but there was no interaction. We want the users of our app to touch UI components such as

More information

iphone Application Programming Lab 3: Swift Types and Custom Operator + A02 discussion

iphone Application Programming Lab 3: Swift Types and Custom Operator + A02 discussion Lab 3: Swift Types and Custom Operator + A02 discussion Nur Al-huda Hamdan RWTH Aachen University Winter Semester 2015/2016 http://hci.rwth-aachen.de/iphone Learning Objectives Discuss A02 Another implementation

More information

CSE 438: Mobile Application Development Lab 2: Virtual Pet App

CSE 438: Mobile Application Development Lab 2: Virtual Pet App CSE 438: Mobile Application Development Lab 2: Virtual Pet App Overview In this lab, you will create an app to take care of your very own virtual pets! The app will only have one screen and simple logic,

More information

Social Pinboard: ios(swift) Application

Social Pinboard: ios(swift) Application Social Pinboard: ios(swift) Application Document Version 1.0.1 Date: 15 th May, 2015 2 [SOCIAL PINBOARD: APP DOCUMENTATION] Important Notes:... 5 AppDelegate Class Reference... 6 Tasks... 6 Instance Methods...

More information

BE PROACTIVE USE REACTIVE

BE PROACTIVE USE REACTIVE BE PROACTIVE USE REACTIVE This morning we re going to talk about reactive programming. We ll cover some of the what, why, and how, hopefully with a bend towards grasping the fundamentals. We ll have some

More information

Advanced Notifications

Advanced Notifications System Frameworks #WWDC16 Advanced Notifications Session 708 Michele Campeotto ios Notifications 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

A Better MVC. 300 line view controllers or bust. Dave A guy who thinks too deeply about stuff

A Better MVC. 300 line view controllers or bust. Dave A guy who thinks too deeply about stuff A Better MVC 300 line view controllers or bust Dave DeLong @davedelong A guy who thinks too deeply about stuff Heads Up This is all my opinion (! hi legal & pr teams!) Lots of similar terminology View

More information

Gerontechnology II. Collecting Smart Phone Sensor Data for Gerontechnology. Using ios

Gerontechnology II. Collecting Smart Phone Sensor Data for Gerontechnology. Using ios Gerontechnology II Collecting Smart Phone Sensor Data for Gerontechnology Using ios Introduction to ios ios devices and sensors Xcode Swift Getting started with Sensor App ios Devices ipad iphone Apple

More information

ios Tic Tac Toe Game John Robinson at Rowan University

ios Tic Tac Toe Game John Robinson at Rowan University ios Tic Tac Toe Game John Robinson at Rowan University Agenda Day 3 Introduction to Swift and Xcode Creating the Tic Tac Toe GUI Lunch Break Writing the Tic Tac Toe Game Code RAMP Wrap up Process for Developing

More information

ios Application Development Hello World App Rubric

ios Application Development Hello World App Rubric ios Application Development Hello World App Rubric 1 HelloWorld App Rubric Unsatisfactory Needs Revision Proficient Exemplary There s indication that you (student) struggle to grasp concepts. Although

More information

Miscellaneous Topics

Miscellaneous Topics Miscellaneous Topics Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Outline Renaming Xcode project and

More information

ios Development - Xcode IDE

ios Development - Xcode IDE ios Development - Xcode IDE To develop ios applications, you need to have an Apple device like MacBook Pro, Mac Mini, or any Apple device with OS X operating system, and the following Xcode It can be downloaded

More information

COMP327 Mobile Computing Session: Lecture Set 1a - Swift Introduction and the Foundation Framework Part 2

COMP327 Mobile Computing Session: Lecture Set 1a - Swift Introduction and the Foundation Framework Part 2 COMP327 Mobile Computing Session: 2018-2019 Lecture Set 1a - Swift Introduction and the Foundation Framework Part 2 73 Other Swift Guard Already seen that for optionals it may be necessary to test that

More information

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall Stanford Developing Applications for ios Today Mostly Swift but some other stuff too Autolayout teaser Quick review of what we learned in Concentration CountableRange of floating point numbers Tuples Computed

More information

Announcements. Today s Topics

Announcements. Today s Topics Announcements Lab 2 is due tonight by 11:59 PM Late policy is 10% of lab total per day late So -7.5 points per day late for lab 2 Labs 3 and 4 are posted on the course website Extensible Networking Platform

More information

CSC 581: Mobile App Development Spring 2018

CSC 581: Mobile App Development Spring 2018 CSC 581: Mobile App Development Spring 2018 Unit 2: Introduciton to the UIKit UIKit, UIViews UIControl subclasses 1 UIKit the UIKit is a code framework for building mobile apps the foundational class for

More information

Mastering Drag and Drop

Mastering Drag and Drop Session App Frameworks #WWDC17 Mastering Drag and Drop 213 Tom Adriaenssen, UIKit Wenson Hsieh, WebKit Robb Böhnke, UIKit 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

Patterns & practices for unit-testing Swift-ly. Jakub Turek 18th June, 2018

Patterns & practices for unit-testing Swift-ly. Jakub Turek 18th June, 2018 Patterns & practices for unit-testing Swift-ly Jakub Turek 18th June, 2018 About me Jakub Turek https://jakubturek.com @KubaTurek turekj EL Passion 1 Agenda 1. Introduction to unit-testing. Test Driven

More information

Media and Gaming Accessibility

Media and Gaming Accessibility Session System Frameworks #WWDC17 Media and Gaming Accessibility 217 Greg Hughes, Software Engineering Manager Charlotte Hill, Software Engineer 2017 Apple Inc. All rights reserved. Redistribution or public

More information

ITP 342 Mobile App Dev. Web View

ITP 342 Mobile App Dev. Web View ITP 342 Mobile App Dev Web View Web View 2 WebKit The WebKit provides a set of core classes to display web content in windows, and by default, implements features such as following links clicked by the

More information

Mastering UIKit on tvos

Mastering UIKit on tvos App Frameworks #WWDC16 Mastering UIKit on tvos Session 210 Justin Voss UIKit Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from

More information

Stanford CS193p. Developing Applications for ios. Spring CS193p. Spring 2016

Stanford CS193p. Developing Applications for ios. Spring CS193p. Spring 2016 Stanford Developing Applications for ios Today Memory Management for Reference Types Controlling when things leave the heap Closure Capture Closures capture things into the heap too Extensions A simple,

More information

1 Build Your First App. The way to get started is to quit talking and begin doing. Walt Disney

1 Build Your First App. The way to get started is to quit talking and begin doing. Walt Disney 1 Build Your First App The way to get started is to quit talking and begin doing. Walt Disney Copyright 2015 AppCoda Limited All rights reserved. Please do not distribute or share without permission. No

More information

Mobile Development Lab 3

Mobile Development Lab 3 Mobile Development Lab 3 Objectives Illustrate closures through examples Have fun with maps, location and geolocation Have fun with animations Closures implemented in Swift Closures are self-contained

More information

LESSONS LEARNED. SWIFT. Dagna Bieda, 7th April 2016

LESSONS LEARNED. SWIFT. Dagna Bieda, 7th April 2016 LESSONS LEARNED. SWIFT Dagna Bieda, 7th April 2016 SWIFT & XCODE Brief Intro Language that essentially marries the readability of Python with the speed of C++. @jeremyconkin SWIFT mix of good practices

More information

ARCHETYPE MODERN ANDROID ARCHITECTURE STEPAN GONCHAROV / DENIS NEKLIUDOV

ARCHETYPE MODERN ANDROID ARCHITECTURE STEPAN GONCHAROV / DENIS NEKLIUDOV ARCHETYPE MODERN ANDROID ARCHITECTURE STEPAN GONCHAROV / DENIS NEKLIUDOV 90seconds.tv 14000+ VIDEOS 1200+ BRANDS 92+ COUNTRIES data class RegisterViewModelStateImpl( override val email: ObservableString

More information

CSC 581: Mobile App Development Spring 2019

CSC 581: Mobile App Development Spring 2019 CSC 581: Mobile App Development Spring 2019 Unit 1: Getting Started with App Development Xcode installing XCode, creating a project, MVC pattern interface builder, storyboards, object library outlets vs.

More information

Lecture 5 Demo Code: FaceIt MVC and Gestures

Lecture 5 Demo Code: FaceIt MVC and Gestures Lecture 5 Demo Code: FaceIt MVC and Gestures Objective Included below is the source code for the demo in lecture. It is provided under the same Creative Commons licensing as the rest of CS193p s course

More information

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer App Frameworks #WWDC16 What s New in tvos Session 206 Hans Kim tvos Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Welcome

More information

Building Faster in Xcode

Building Faster in Xcode #WWDC18 Building Faster in Xcode Session 408 David Owens, Xcode Engineer Jordan Rose, Swift Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall Stanford Developing Applications for ios Today Mostly more Swift but some other stuff too Quick demo of mutating protocols String NSAttributedString Closures (and functions as types in general) Data Structures

More information

lecture 10 UI/UX and Programmatic Design cs : spring 2018

lecture 10 UI/UX and Programmatic Design cs : spring 2018 lecture 10 UI/UX and Programmatic Design cs198-001 : spring 2018 1 Announcements custom app progress form due before lab (~1 minute) will be released after lecture only 2 labs left (both very important)

More information

ITP 342 Mobile App Dev. Delegates

ITP 342 Mobile App Dev. Delegates ITP 342 Mobile App Dev Delegates Protocol A protocol is a declaration of a list of methods Classes that conform to the protocol implement those methods A protocol can declare two kinds of methods: required

More information

COMPLETE TUTORIAL COURSE. Learn to make tvos LE. apps with real-worldam S F

COMPLETE TUTORIAL COURSE. Learn to make tvos LE. apps with real-worldam S F HACKING WITH SWIFT COMPLETE TUTORIAL COURSE Learn to make tvos LE P apps with real-worldam S Swift projects REEPaul Hudson F Project 1 Randomly Beautiful 2 www.hackingwithswift.com Setting up In this first

More information

Gestures. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder

Gestures. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Gestures Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Outline Gestures Gesture recognizers Gesture states

More information

A Type is Worth a Thousand Tests

A Type is Worth a Thousand Tests A Type is Worth a Thousand Tests Manuel M T Chakravarty Applicative & Tweag I/O mchakravarty TacticalGrace justtesting.org haskellformac.com Let s talk about Let s talk about Swift Let s talk about Language

More information

HPE AppPulse Mobile. Software Version: 2.1. Adding AppPulse Mobile to Your ios App

HPE AppPulse Mobile. Software Version: 2.1. Adding AppPulse Mobile to Your ios App HPE AppPulse Mobile Software Version: 2.1 Adding AppPulse Mobile to Your ios App Document Release Date: November 2015 Contents How to Add HP AppPulse Mobile to Your ios App 3 Advanced Options 7 Crash Stack

More information

Stanford CS193p. Developing Applications for ios. Spring CS193p. Spring 2016

Stanford CS193p. Developing Applications for ios. Spring CS193p. Spring 2016 Stanford Developing Applications for ios Today Views Custom Drawing Demo FaceView Views A view (i.e. UIView subclass) represents a rectangular area Defines a coordinate space For drawing And for handling

More information

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall Stanford Developing Applications for ios Today Drag and Drop Transferring information around within and between apps. EmojiArt Demo Drag and drop an image to get our EmojiArt masterpieces started. UITableView

More information

ios Application Development Lecture 3: Unit 2

ios Application Development Lecture 3: Unit 2 ios Application Development Lecture 3: Unit 2 Dr. Simon Völker & Philipp Wacker Media Computing Group RWTH Aachen University Winter Semester 2017/2018 http://hci.rwth-aachen.de/ios Recap Basics of Swift

More information

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017 Stanford Developing Applications for ios Today Views Custom Drawing Demo FaceView Views A view (i.e. UIView subclass) represents a rectangular area Defines a coordinate space For drawing And for handling

More information

Produced by. Design Patterns. MSc in Computer Science. Eamonn de Leastar

Produced by. Design Patterns. MSc in Computer Science. Eamonn de Leastar Design Patterns MSc in Computer Science Produced by Eamonn de Leastar (edeleastar@wit.ie) Department of Computing, Maths & Physics Waterford Institute of Technology http://www.wit.ie http://elearning.wit.ie

More information

What s New in tvos 12

What s New in tvos 12 #WWDC18 What s New in tvos 12 Session 208 Hans Kim, tvos Engineering 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Agenda Agenda

More information

User Interfaces. Lecture 15. Application Programming on Mac OS. Hamza Bennani September 4, 2018

User Interfaces. Lecture 15. Application Programming on Mac OS. Hamza Bennani September 4, 2018 User Interfaces Lecture 15 Application Programming on Mac OS Hamza Bennani hamza@hamzabennani.com September 4, 2018 Logistics Office hours: Tue/Thu, 2pm to 3pm. Office: 250 Geoff Wyvill. Acknowledgment:

More information

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017 Stanford Developing Applications for ios Today Error Handling in Swift try Extensions A simple, powerful, but easily overused code management syntax Protocols Last (but certainly not least important) typing

More information

Objectives. Submission. Register for an Apple account. Notes on Saving Projects. Xcode Shortcuts. CprE 388 Lab 1: Introduction to Xcode

Objectives. Submission. Register for an Apple account. Notes on Saving Projects. Xcode Shortcuts. CprE 388 Lab 1: Introduction to Xcode Objectives Register for an Apple account Create an application using Xcode Test your application with the iphone simulator Import certificates for development Build your application to the device Expand

More information

This book contains code samples available under the MIT License, printed below:

This book contains code samples available under the MIT License, printed below: Bluetooth Low Energy in ios Swift by Tony Gaitatzis Copyright 2015 All Rights Reserved All rights reserved. This book or any portion thereof may not be reproduced or used in any manner whatsoever without

More information

Mobile application development using the ReactiveX framework

Mobile application development using the ReactiveX framework Masaryk University Faculty of Informatics Mobile application development using the ReactiveX framework Bachelor s Thesis Robin Křenecký Brno, Spring 2018 Masaryk University Faculty of Informatics Mobile

More information

Data Storage. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder

Data Storage. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Data Storage Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Outline Already seen UserDefaults icloud File

More information

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved.

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Reactive Programming in Java Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Prerequisites: Functional Programming as in Java 8 Streams of Java 8 Lambda expressions Method references Expectations

More information

Appendix B: Master Code

Appendix B: Master Code Appendix B: Master Code Blind Me With SciEEnce 1 Contents: 1. Indoor Blinds.. 2 2. Outdoor Weather Station 6 3. Mobile Application. 11 1. Indoor Blinds Blind Me With SciEEnce 2 /****************************************************************

More information

Learn to make desktop LE

Learn to make desktop LE HACKING WITH SWIFT COMPLETE TUTORIAL COURSE Learn to make desktop LE P apps with real-worldam S Swift projects REEPaul Hudson F Project 1 Storm Viewer Get started coding in Swift by making an image viewer

More information

Data Storage. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder

Data Storage. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Data Storage Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Data Storage Already seen: UserDefaults, icloud

More information

ITP 342 Mobile App Dev. Table Views

ITP 342 Mobile App Dev. Table Views ITP 342 Mobile App Dev Table Views Table Views The most common mechanism used to display lists of data to the user Highly configurable objects that can be made to look practically any way you want them

More information

Assignment I: Concentration

Assignment I: Concentration Assignment I: Concentration Objective The goal of this assignment is to recreate the demonstration given in lecture and then make some small enhancements. It is important that you understand what you are

More information

ITP 342 Mobile App Dev. Table Views

ITP 342 Mobile App Dev. Table Views ITP 342 Mobile App Dev Table Views Tables A table presents data as a scrolling, singlecolumn list of rows that can be divided into sections or groups. Use a table to display large or small amounts of information

More information

Questions. Exams: no. Get by without own Mac? Why ios? ios vs Android restrictions. Selling in App store how hard to publish? Future of Objective-C?

Questions. Exams: no. Get by without own Mac? Why ios? ios vs Android restrictions. Selling in App store how hard to publish? Future of Objective-C? Questions Exams: no Get by without own Mac? Why ios? ios vs Android restrictions Selling in App store how hard to publish? Future of Objective-C? Grading: Lab/homework: 40%, project: 40%, individual report:

More information

ios 9 SDK Development

ios 9 SDK Development Extracted from: ios 9 SDK Development Creating iphone and ipad Apps with Swift This PDF file contains pages extracted from ios 9 SDK Development, published by the Pragmatic Bookshelf. For more information

More information

04 Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio. Ben Riga

04 Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio. Ben Riga 04 Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio Ben Riga http://about.me/ben.riga Course Topics Building Apps for Both Windows 8 and Windows Phone 8 Jump Start 01 Comparing Windows

More information

Learn to make ios apps

Learn to make ios apps HACKING WITH SWIFT PROJECTS 1-39 Learn to make ios apps E L P with real projects SAM E E FR Paul Hudson Project 1 Storm Viewer Get started coding in Swift by making an image viewer app and learning key

More information

Linkify Documentation

Linkify Documentation Linkify Documentation Release 1.0.0 Studio Ousia November 01, 2014 Contents 1 Developer Support 3 1.1 Customize Linkify Application..................................... 3 1.2 Embed to ios App............................................

More information

UI-Testing, Reactive Programming and some Kotlin.

UI-Testing, Reactive Programming and some Kotlin. UI-Testing, Reactive Programming and some Kotlin anders.froberg@liu.se Load up your guns, and bring your friends This is the end, My only Friend, the end Äntligen stod prästen i predikstolen I ll be back

More information

Stanford CS193p. Developing Applications for ios. Fall Stanford CS193p. Fall 2011

Stanford CS193p. Developing Applications for ios. Fall Stanford CS193p. Fall 2011 Developing Applications for ios Today UI Element of the Week UIToolbar ipad Split View Popover Universal (iphone + ipad) Application Demo Friday Section AVFoundation framework - Capturing and manipulating

More information

LEARNING ios APP DEVELOPMENT With Swift 3 & ios 10

LEARNING ios APP DEVELOPMENT With Swift 3 & ios 10 LEARNING ios APP DEVELOPMENT With Swift 3 & ios 10 Detailed Course outline Session - 1. Swift Basics. Section - 1. Variables and Constants Creating Variables and Constants. Type annotations Type Inference

More information

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved.

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Reactive Programming in Java Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Prerequisites: Core Java Lambda Expressions Method references Functional Programming Web - application development

More information

Tip Calculator App Introducing Swift, Text Fields, Sliders, Outlets, Actions, View Controllers, Event Handling, NSDecimalNumber,

Tip Calculator App Introducing Swift, Text Fields, Sliders, Outlets, Actions, View Controllers, Event Handling, NSDecimalNumber, 3 Tip Calculator App Introducing Swift, Text Fields, Sliders, Outlets, Actions, View Controllers, Event Handling, NSDecimalNumber, NSNumberFormatter and Automatic Reference Counting Objectives In this

More information

Apple Watch Docs. Release 0.1. Michael Hahn

Apple Watch Docs. Release 0.1. Michael Hahn Apple Watch Docs Release 0.1 Michael Hahn Nov 20, 2017 Contents 1 First Watch Glance 3 1.1 Create an iphone App.......................................... 3 1.2 Add WatchKit Targets..........................................

More information

Leveraging Touch Input on ios

Leveraging Touch Input on ios App Frameworks #WWDC16 Leveraging Touch Input on ios And getting the most out of Apple Pencil Session 220 Dominik Wagner UIKit Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display

More information

ADVANCED M A. Learn SiriKit, imessage apps, rich notifications, and more. with real-world projects HACKING WITH SWIFT COMPLETE TUTORIAL COURSE

ADVANCED M A. Learn SiriKit, imessage apps, rich notifications, and more. with real-world projects HACKING WITH SWIFT COMPLETE TUTORIAL COURSE HACKING WITH SWIFT ADVANCED ios VOLUME ONE COMPLETE TUTORIAL COURSE Learn SiriKit, imessage apps, E L P rich notifications, and more M A S with real-world projects E E FR Paul Hudson Chapter 1 Happy Days

More information

Assignment II: Calculator Brain

Assignment II: Calculator Brain Assignment II: Calculator Brain Objective You will start this assignment by enhancing your Assignment 1 Calculator to include the changes made in lecture (i.e. CalculatorBrain, etc.). This is the last

More information

Multimedia. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder

Multimedia. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Multimedia Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Outline Audio recording, access, and playback

More information

Data Delivery with Drag and Drop

Data Delivery with Drag and Drop Session App Frameworks #WWDC17 Data Delivery with Drag and Drop 227 Dave Rahardja, UIKit Tanu Singhal, UIKit 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without

More information

Mobile Applications Development. Swift, Cocoa and Xcode

Mobile Applications Development. Swift, Cocoa and Xcode Mobile Applications Development Swift, Cocoa and Xcode Swift programming language Swift is the programming language for ios, macos, watchos, and tvos app development First version in 2014 Current version

More information

Stanford CS193p. Developing Applications for ios. Winter CS193p! Winter 2015

Stanford CS193p. Developing Applications for ios. Winter CS193p! Winter 2015 Stanford CS193p Developing Applications for ios Today Objective-C Compatibility Bridging Property List NSUserDefaults Demo: var program in CalculatorBrain Views Custom Drawing Demo FaceView Bridging Objective-C

More information

Step 1: Open Xcode and select Create a new Xcode Project from the Welcome to Xcode menu.

Step 1: Open Xcode and select Create a new Xcode Project from the Welcome to Xcode menu. In this tutorial we are going to build a simple calculator using buttons that are all linked together using the same method. We will also add our own method to the source code to create some additional

More information

IOS - TEXT FIELD. Use of Text Field. Important Properties of Text Field. Updating Properties in xib

IOS - TEXT FIELD. Use of Text Field. Important Properties of Text Field. Updating Properties in xib IOS - TEXT FIELD http://www.tutorialspoint.com/ios/ios_ui_elements_text_field.htm Copyright tutorialspoint.com Use of Text Field A text field is a UI element that enables the app to get user input. A UITextfield

More information

Mobile Application Programming. Swift Classes

Mobile Application Programming. Swift Classes Mobile Application Programming Swift Classes Swift Top-Level Entities Like C/C++ but unlike Java, Swift allows declarations of functions, variables, and constants at the top-level, outside any class declaration

More information

Assignment IV: Smashtag Mentions

Assignment IV: Smashtag Mentions Assignment IV: Smashtag Mentions Objective In this assignment, you will enhance the Smashtag application that we built in class to give ready-access to hashtags, urls, images and users mentioned in a tweet.

More information

iphone Application Programming Lecture 3: Swift Part 2

iphone Application Programming Lecture 3: Swift Part 2 Lecture 3: Swift Part 2 Nur Al-huda Hamdan RWTH Aachen University Winter Semester 2015/2016 http://hci.rwth-aachen.de/iphone Properties Properties are available for classes, enums or structs Classified

More information