在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Desgin Patterns by Tutorials v1.0 (Swift 4 & Xcode 9)

Desgin Patterns by Tutorials v1.0 (Swift 4 & Xcode 9)

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:104.19M
  • 下载次数:2
  • 浏览次数:32
  • 发布时间:2021-03-12
  • 实例类别:一般编程问题
  • 发 布 人:好学IT男
  • 文件格式:.zip
  • 所需积分:2
 

实例介绍

【实例简介】
Ray Wenderlich 出品关于 iOS 开发中 Design Pattern 的学习书籍,目前已更新到第一版(Swift 4 和 Xcode 9)。内含 pdf 与 epub 格式书籍,还有所有章节的代码资源。
【实例截图】
【核心代码】
5ebc46b1-5362-4df6-9f69-d40914f1b8a5
├── 03-model-view-controller-pattern
│   ├── final
│   │   ├── FundamentalDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── FundamentalDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Builder_Diagram.png
│   │   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Delegation_Diagram.png
│   │   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Memento_Diagram.png
│   │   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVC_Diagram.png
│   │   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Observable.swift
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Singleton_Diagram.png
│   │   │   │   └── Strategy.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Strategy_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RabbleWabble
│   │   ├── RabbleWabble
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── QuestionViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── QuestionGroupData.swift
│   │   │   │   ├── QuestionGroup.swift
│   │   │   │   └── Question.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_menu.pdf
│   │   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_settings.pdf
│   │   │   │   │   └── logo.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── logo.pdf
│   │   │   │   └── Info.plist
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   └── Main.storyboard
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── QuestionView.swift
│   │   └── RabbleWabble.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   ├── resources
│   │   ├── Assets.xcassets
│   │   │   ├── AppIcon.appiconset
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   └── ItunesArtwork@2x.png
│   │   │   ├── Contents.json
│   │   │   ├── ic_circle_check.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── ic_circle_check.pdf
│   │   │   ├── ic_circle_plus.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── ic_circle_plus.pdf
│   │   │   ├── ic_circle_x.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── ic_circle_x.pdf
│   │   │   ├── ic_menu.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── ic_menu.pdf
│   │   │   ├── ic_settings.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── ic_settings.pdf
│   │   │   └── logo.imageset
│   │   │   ├── Contents.json
│   │   │   └── logo.pdf
│   │   ├── LaunchScreen.storyboard
│   │   └── QuestionGroupData.swift
│   └── starter
│   └── FundamentalDesignPatterns.xcworkspace
│   ├── contents.xcworkspacedata
│   ├── FundamentalDesignPatterns.playground
│   │   ├── contents.xcplayground
│   │   └── Pages
│   │   ├── Builder.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Builder_Diagram.png
│   │   ├── Delegation.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Delegation_Diagram.png
│   │   ├── Memento.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Memento_Diagram.png
│   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── MVC_Diagram.png
│   │   ├── Observer.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   ├── Resources
│   │   │   │   └── Observer_Diagram.png
│   │   │   └── Sources
│   │   │   └── Observable.swift
│   │   ├── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── Singleton.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Singleton_Diagram.png
│   │   └── Strategy.xcplaygroundpage
│   │   ├── Contents.swift
│   │   └── Resources
│   │   └── Strategy_Diagram.png
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 04-delegation-pattern
│   ├── final
│   │   ├── FundamentalDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── FundamentalDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Builder_Diagram.png
│   │   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Delegation_Diagram.png
│   │   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Memento_Diagram.png
│   │   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVC_Diagram.png
│   │   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Observable.swift
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Singleton_Diagram.png
│   │   │   │   └── Strategy.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Strategy_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RabbleWabble
│   │   ├── RabbleWabble
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   ├── QuestionViewController.swift
│   │   │   │   └── SelectQuestionGroupViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── QuestionGroupData.swift
│   │   │   │   ├── QuestionGroupFile.swift
│   │   │   │   ├── QuestionGroup.swift
│   │   │   │   └── Question.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_menu.pdf
│   │   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_settings.pdf
│   │   │   │   │   └── logo.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── logo.pdf
│   │   │   │   └── Info.plist
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   └── Main.storyboard
│   │   │   ├── LaunchScreen.storyboard
│   │   │   ├── QuestionGroupCell.swift
│   │   │   └── QuestionView.swift
│   │   └── RabbleWabble.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── FundamentalDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── FundamentalDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Builder_Diagram.png
│   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Delegation_Diagram.png
│   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Memento_Diagram.png
│   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVC_Diagram.png
│   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Observable.swift
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Singleton_Diagram.png
│   │   │   └── Strategy.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Strategy_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── RabbleWabble
│   ├── RabbleWabble
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   └── QuestionViewController.swift
│   │   ├── Models
│   │   │   ├── QuestionGroupData.swift
│   │   │   ├── QuestionGroup.swift
│   │   │   └── Question.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_menu.pdf
│   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_settings.pdf
│   │   │   │   └── logo.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── logo.pdf
│   │   │   └── Info.plist
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   └── Main.storyboard
│   │   ├── LaunchScreen.storyboard
│   │   └── QuestionView.swift
│   └── RabbleWabble.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 05-strategy-pattern
│   ├── final
│   │   ├── FundamentalDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── FundamentalDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Builder_Diagram.png
│   │   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Delegation_Diagram.png
│   │   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Memento_Diagram.png
│   │   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVC_Diagram.png
│   │   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Observable.swift
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Singleton_Diagram.png
│   │   │   │   └── Strategy.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Strategy_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RabbleWabble
│   │   ├── RabbleWabble
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   ├── QuestionViewController.swift
│   │   │   │   └── SelectQuestionGroupViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── QuestionGroupData.swift
│   │   │   │   ├── QuestionGroup.swift
│   │   │   │   └── Question.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_menu.pdf
│   │   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_settings.pdf
│   │   │   │   │   └── logo.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── logo.pdf
│   │   │   │   └── Info.plist
│   │   │   ├── Strategies
│   │   │   │   ├── QuestionStrategy.swift
│   │   │   │   ├── RandomQuestionStrategy.swift
│   │   │   │   └── SequentialQuestionStrategy.swift
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   └── Main.storyboard
│   │   │   ├── LaunchScreen.storyboard
│   │   │   ├── QuestionGroupCell.swift
│   │   │   └── QuestionView.swift
│   │   └── RabbleWabble.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── FundamentalDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── FundamentalDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Builder_Diagram.png
│   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Delegation_Diagram.png
│   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Memento_Diagram.png
│   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVC_Diagram.png
│   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Observable.swift
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Singleton_Diagram.png
│   │   │   └── Strategy.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Strategy_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── RabbleWabble
│   ├── RabbleWabble
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   ├── QuestionViewController.swift
│   │   │   └── SelectQuestionGroupViewController.swift
│   │   ├── Models
│   │   │   ├── QuestionGroupData.swift
│   │   │   ├── QuestionGroup.swift
│   │   │   └── Question.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_menu.pdf
│   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_settings.pdf
│   │   │   │   └── logo.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── logo.pdf
│   │   │   └── Info.plist
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   └── Main.storyboard
│   │   ├── LaunchScreen.storyboard
│   │   ├── QuestionGroupCell.swift
│   │   └── QuestionView.swift
│   └── RabbleWabble.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 06-singleton-pattern
│   ├── final
│   │   ├── FundamentalDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── FundamentalDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Builder_Diagram.png
│   │   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Delegation_Diagram.png
│   │   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Memento_Diagram.png
│   │   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVC_Diagram.png
│   │   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Observable.swift
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Singleton_Diagram.png
│   │   │   │   └── Strategy.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Strategy_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RabbleWabble
│   │   ├── RabbleWabble
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   ├── AppSettingsViewController.swift
│   │   │   │   ├── QuestionViewController.swift
│   │   │   │   └── SelectQuestionGroupViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── AppSettings.swift
│   │   │   │   ├── QuestionGroupData.swift
│   │   │   │   ├── QuestionGroup.swift
│   │   │   │   └── Question.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_menu.pdf
│   │   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_settings.pdf
│   │   │   │   │   └── logo.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── logo.pdf
│   │   │   │   └── Info.plist
│   │   │   ├── Strategies
│   │   │   │   ├── QuestionStrategy.swift
│   │   │   │   ├── RandomQuestionStrategy.swift
│   │   │   │   └── SequentialQuestionStrategy.swift
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   └── Main.storyboard
│   │   │   ├── LaunchScreen.storyboard
│   │   │   ├── QuestionGroupCell.swift
│   │   │   └── QuestionView.swift
│   │   └── RabbleWabble.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── FundamentalDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── FundamentalDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Builder_Diagram.png
│   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Delegation_Diagram.png
│   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Memento_Diagram.png
│   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVC_Diagram.png
│   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Observable.swift
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Singleton_Diagram.png
│   │   │   └── Strategy.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Strategy_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── RabbleWabble
│   ├── RabbleWabble
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   ├── QuestionViewController.swift
│   │   │   └── SelectQuestionGroupViewController.swift
│   │   ├── Models
│   │   │   ├── QuestionGroupData.swift
│   │   │   ├── QuestionGroup.swift
│   │   │   └── Question.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_menu.pdf
│   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_settings.pdf
│   │   │   │   └── logo.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── logo.pdf
│   │   │   └── Info.plist
│   │   ├── Strategies
│   │   │   ├── QuestionStrategy.swift
│   │   │   ├── RandomQuestionStrategy.swift
│   │   │   └── SequentialQuestionStrategy.swift
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   └── Main.storyboard
│   │   ├── LaunchScreen.storyboard
│   │   ├── QuestionGroupCell.swift
│   │   └── QuestionView.swift
│   └── RabbleWabble.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 07-memento-pattern
│   ├── final
│   │   ├── FundamentalDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── FundamentalDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Builder_Diagram.png
│   │   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Delegation_Diagram.png
│   │   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Memento_Diagram.png
│   │   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVC_Diagram.png
│   │   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Observable.swift
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Singleton_Diagram.png
│   │   │   │   └── Strategy.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Strategy_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RabbleWabble
│   │   ├── RabbleWabble
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Caretakers
│   │   │   │   ├── DiskCaretaker.swift
│   │   │   │   └── QuestionGroupCaretaker.swift
│   │   │   ├── Controllers
│   │   │   │   ├── AppSettingsViewController.swift
│   │   │   │   ├── QuestionViewController.swift
│   │   │   │   └── SelectQuestionGroupViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── AppSettings.swift
│   │   │   │   ├── QuestionGroup.swift
│   │   │   │   └── Question.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_menu.pdf
│   │   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_settings.pdf
│   │   │   │   │   └── logo.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── logo.pdf
│   │   │   │   ├── Info.plist
│   │   │   │   └── QuestionGroupData.json
│   │   │   ├── Strategies
│   │   │   │   ├── BaseQuestionStrategy.swift
│   │   │   │   ├── QuestionStrategy.swift
│   │   │   │   ├── RandomQuestionStrategy.swift
│   │   │   │   └── SequentialQuestionStrategy.swift
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   └── Main.storyboard
│   │   │   ├── LaunchScreen.storyboard
│   │   │   ├── QuestionGroupCell.swift
│   │   │   └── QuestionView.swift
│   │   └── RabbleWabble.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   ├── resources
│   │   └── QuestionGroupData.json
│   └── starter
│   ├── FundamentalDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── FundamentalDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Builder_Diagram.png
│   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Delegation_Diagram.png
│   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Memento_Diagram.png
│   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVC_Diagram.png
│   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Observable.swift
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Singleton_Diagram.png
│   │   │   └── Strategy.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Strategy_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── RabbleWabble
│   ├── RabbleWabble
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   ├── AppSettingsViewController.swift
│   │   │   ├── QuestionViewController.swift
│   │   │   └── SelectQuestionGroupViewController.swift
│   │   ├── Models
│   │   │   ├── AppSettings.swift
│   │   │   ├── QuestionGroupData.swift
│   │   │   ├── QuestionGroup.swift
│   │   │   └── Question.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_menu.pdf
│   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_settings.pdf
│   │   │   │   └── logo.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── logo.pdf
│   │   │   └── Info.plist
│   │   ├── Strategies
│   │   │   ├── QuestionStrategy.swift
│   │   │   ├── RandomQuestionStrategy.swift
│   │   │   └── SequentialQuestionStrategy.swift
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   └── Main.storyboard
│   │   ├── LaunchScreen.storyboard
│   │   ├── QuestionGroupCell.swift
│   │   └── QuestionView.swift
│   └── RabbleWabble.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 08-observer-pattern
│   ├── final
│   │   ├── FundamentalDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── FundamentalDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Builder_Diagram.png
│   │   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Delegation_Diagram.png
│   │   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Memento_Diagram.png
│   │   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVC_Diagram.png
│   │   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Observable.swift
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Singleton_Diagram.png
│   │   │   │   └── Strategy.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Strategy_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RabbleWabble
│   │   ├── RabbleWabble
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Caretakers
│   │   │   │   ├── DiskCaretaker.swift
│   │   │   │   └── QuestionGroupCaretaker.swift
│   │   │   ├── Controllers
│   │   │   │   ├── AppSettingsViewController.swift
│   │   │   │   ├── QuestionViewController.swift
│   │   │   │   └── SelectQuestionGroupViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── AppSettings.swift
│   │   │   │   ├── Observable.swift
│   │   │   │   ├── QuestionGroup.swift
│   │   │   │   └── Question.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_menu.pdf
│   │   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_settings.pdf
│   │   │   │   │   └── logo.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── logo.pdf
│   │   │   │   ├── Info.plist
│   │   │   │   └── QuestionGroupData.json
│   │   │   ├── Strategies
│   │   │   │   ├── BaseQuestionStrategy.swift
│   │   │   │   ├── QuestionStrategy.swift
│   │   │   │   ├── RandomQuestionStrategy.swift
│   │   │   │   └── SequentialQuestionStrategy.swift
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   └── Main.storyboard
│   │   │   ├── LaunchScreen.storyboard
│   │   │   ├── QuestionGroupCell.swift
│   │   │   └── QuestionView.swift
│   │   └── RabbleWabble.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── FundamentalDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── FundamentalDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Builder_Diagram.png
│   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Delegation_Diagram.png
│   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Memento_Diagram.png
│   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVC_Diagram.png
│   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Observable.swift
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Singleton_Diagram.png
│   │   │   └── Strategy.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Strategy_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── RabbleWabble
│   ├── RabbleWabble
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Caretakers
│   │   │   ├── DiskCaretaker.swift
│   │   │   └── QuestionGroupCaretaker.swift
│   │   ├── Controllers
│   │   │   ├── AppSettingsViewController.swift
│   │   │   ├── QuestionViewController.swift
│   │   │   └── SelectQuestionGroupViewController.swift
│   │   ├── Models
│   │   │   ├── AppSettings.swift
│   │   │   ├── QuestionGroup.swift
│   │   │   └── Question.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_menu.pdf
│   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_settings.pdf
│   │   │   │   └── logo.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── logo.pdf
│   │   │   ├── Info.plist
│   │   │   └── QuestionGroupData.json
│   │   ├── Strategies
│   │   │   ├── BaseQuestionStrategy.swift
│   │   │   ├── QuestionStrategy.swift
│   │   │   ├── RandomQuestionStrategy.swift
│   │   │   └── SequentialQuestionStrategy.swift
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   └── Main.storyboard
│   │   ├── LaunchScreen.storyboard
│   │   ├── QuestionGroupCell.swift
│   │   └── QuestionView.swift
│   └── RabbleWabble.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 09-builder-pattern
│   ├── final
│   │   ├── FundamentalDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── FundamentalDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Builder_Diagram.png
│   │   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Delegation_Diagram.png
│   │   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Memento_Diagram.png
│   │   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVC_Diagram.png
│   │   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Observable.swift
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Singleton_Diagram.png
│   │   │   │   └── Strategy.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Strategy_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RabbleWabble
│   │   ├── RabbleWabble
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Builders
│   │   │   │   └── QuestionGroupBuilder.swift
│   │   │   ├── Caretakers
│   │   │   │   ├── DiskCaretaker.swift
│   │   │   │   └── QuestionGroupCaretaker.swift
│   │   │   ├── Controllers
│   │   │   │   ├── AppSettingsViewController.swift
│   │   │   │   ├── CreateQuestionGroupViewController.swift
│   │   │   │   ├── QuestionViewController.swift
│   │   │   │   └── SelectQuestionGroupViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── AppSettings.swift
│   │   │   │   ├── Observable.swift
│   │   │   │   ├── QuestionGroup.swift
│   │   │   │   └── Question.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_menu.pdf
│   │   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_settings.pdf
│   │   │   │   │   └── logo.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── logo.pdf
│   │   │   │   ├── Info.plist
│   │   │   │   └── QuestionGroupData.json
│   │   │   ├── Strategies
│   │   │   │   ├── BaseQuestionStrategy.swift
│   │   │   │   ├── QuestionStrategy.swift
│   │   │   │   ├── RandomQuestionStrategy.swift
│   │   │   │   └── SequentialQuestionStrategy.swift
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   └── Main.storyboard
│   │   │   ├── CreateQuestionCell.swift
│   │   │   ├── CreateQuestionGroupTitleCell.swift
│   │   │   ├── JapaneseTextField.swift
│   │   │   ├── LaunchScreen.storyboard
│   │   │   ├── NewQuestionGroup.storyboard
│   │   │   ├── QuestionGroupCell.swift
│   │   │   └── QuestionView.swift
│   │   └── RabbleWabble.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   ├── resources
│   │   ├── Controllers
│   │   │   └── CreateQuestionGroupViewController.swift
│   │   └── Views
│   │   ├── CreateQuestionCell.swift
│   │   ├── CreateQuestionGroupTitleCell.swift
│   │   ├── JapaneseTextField.swift
│   │   └── NewQuestionGroup.storyboard
│   ├── starter
│   │   ├── FundamentalDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── FundamentalDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Builder_Diagram.png
│   │   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Delegation_Diagram.png
│   │   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Memento_Diagram.png
│   │   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVC_Diagram.png
│   │   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Observable.swift
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Singleton_Diagram.png
│   │   │   │   └── Strategy.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Strategy_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RabbleWabble
│   │   ├── RabbleWabble
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Caretakers
│   │   │   │   ├── DiskCaretaker.swift
│   │   │   │   └── QuestionGroupCaretaker.swift
│   │   │   ├── Controllers
│   │   │   │   ├── AppSettingsViewController.swift
│   │   │   │   ├── CreateQuestionGroupViewController.swift
│   │   │   │   ├── QuestionViewController.swift
│   │   │   │   └── SelectQuestionGroupViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── AppSettings.swift
│   │   │   │   ├── Observable.swift
│   │   │   │   ├── QuestionGroup.swift
│   │   │   │   └── Question.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_menu.pdf
│   │   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_settings.pdf
│   │   │   │   │   └── logo.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── logo.pdf
│   │   │   │   ├── Info.plist
│   │   │   │   └── QuestionGroupData.json
│   │   │   ├── Strategies
│   │   │   │   ├── BaseQuestionStrategy.swift
│   │   │   │   ├── QuestionStrategy.swift
│   │   │   │   ├── RandomQuestionStrategy.swift
│   │   │   │   └── SequentialQuestionStrategy.swift
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   └── Main.storyboard
│   │   │   ├── CreateQuestionCell.swift
│   │   │   ├── CreateQuestionGroupTitleCell.swift
│   │   │   ├── JapaneseTextField.swift
│   │   │   ├── LaunchScreen.storyboard
│   │   │   ├── NewQuestionGroup.storyboard
│   │   │   ├── QuestionGroupCell.swift
│   │   │   └── QuestionView.swift
│   │   └── RabbleWabble.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter_before_files_added_TE_FPE_Only
│   ├── FundamentalDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── FundamentalDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Builder.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Builder_Diagram.png
│   │   │   ├── Delegation.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Delegation_Diagram.png
│   │   │   ├── Memento.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Memento_Diagram.png
│   │   │   ├── Model-View-Controller.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVC_Diagram.png
│   │   │   ├── Observer.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Observer_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Observable.swift
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Singleton.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Singleton_Diagram.png
│   │   │   └── Strategy.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Strategy_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── RabbleWabble
│   ├── RabbleWabble
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Caretakers
│   │   │   ├── DiskCaretaker.swift
│   │   │   └── QuestionGroupCaretaker.swift
│   │   ├── Controllers
│   │   │   ├── AppSettingsViewController.swift
│   │   │   ├── QuestionViewController.swift
│   │   │   └── SelectQuestionGroupViewController.swift
│   │   ├── Models
│   │   │   ├── AppSettings.swift
│   │   │   ├── Observable.swift
│   │   │   ├── QuestionGroup.swift
│   │   │   └── Question.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   ├── ic_circle_plus.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_plus.pdf
│   │   │   │   ├── ic_circle_x.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_x.pdf
│   │   │   │   ├── ic_menu.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_menu.pdf
│   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_settings.pdf
│   │   │   │   └── logo.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── logo.pdf
│   │   │   ├── Info.plist
│   │   │   └── QuestionGroupData.json
│   │   ├── Strategies
│   │   │   ├── BaseQuestionStrategy.swift
│   │   │   ├── QuestionStrategy.swift
│   │   │   ├── RandomQuestionStrategy.swift
│   │   │   └── SequentialQuestionStrategy.swift
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   └── Main.storyboard
│   │   ├── LaunchScreen.storyboard
│   │   ├── QuestionGroupCell.swift
│   │   └── QuestionView.swift
│   └── RabbleWabble.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 10-model-view-viewmodel-pattern
│   ├── 10-model-view-viewmodel-pattern.zip
│   ├── final
│   │   ├── CoffeeQuest
│   │   │   ├── CoffeeQuest
│   │   │   │   ├── AppDelegate
│   │   │   │   │   └── AppDelegate.swift
│   │   │   │   ├── Controllers
│   │   │   │   │   └── ViewController.swift
│   │   │   │   ├── Resources
│   │   │   │   │   ├── APIKeys.swift
│   │   │   │   │   ├── Assets.xcassets
│   │   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   │   ├── bad.imageset
│   │   │   │   │   │   │   ├── bad@2x.png
│   │   │   │   │   │   │   ├── bad@3x.png
│   │   │   │   │   │   │   ├── bad.png
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── good.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── good@2x.png
│   │   │   │   │   │   │   ├── good@3x.png
│   │   │   │   │   │   │   └── good.png
│   │   │   │   │   │   ├── great.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── great@2x.png
│   │   │   │   │   │   │   ├── great@3x.png
│   │   │   │   │   │   │   └── great.png
│   │   │   │   │   │   ├── Launch.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── Launch@2x.png
│   │   │   │   │   │   │   ├── Launch@3x.png
│   │   │   │   │   │   │   └── Launch.png
│   │   │   │   │   │   ├── meh.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── meh@2x.png
│   │   │   │   │   │   │   ├── meh@3x.png
│   │   │   │   │   │   │   └── meh.png
│   │   │   │   │   │   └── terrible.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── terrible@2x.png
│   │   │   │   │   │   ├── terrible@3x.png
│   │   │   │   │   │   └── terrible.png
│   │   │   │   │   └── Info.plist
│   │   │   │   ├── ViewModels
│   │   │   │   │   └── BusinessMapViewModel.swift
│   │   │   │   └── Views
│   │   │   │   └── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   ├── CoffeeQuest.xcodeproj
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── project.xcworkspace
│   │   │   │   └── contents.xcworkspacedata
│   │   │   ├── CoffeeQuest.xcworkspace
│   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   └── xcshareddata
│   │   │   │   └── IDEWorkspaceChecks.plist
│   │   │   ├── Podfile
│   │   │   ├── Podfile.lock
│   │   │   └── Pods
│   │   │   ├── Manifest.lock
│   │   │   ├── Pods.xcodeproj
│   │   │   │   └── project.pbxproj
│   │   │   ├── Target Support Files
│   │   │   │   ├── Pods-CoffeeQuest
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.markdown
│   │   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.plist
│   │   │   │   │   ├── Pods-CoffeeQuest.debug.xcconfig
│   │   │   │   │   ├── Pods-CoffeeQuest-dummy.m
│   │   │   │   │   ├── Pods-CoffeeQuest-frameworks.sh
│   │   │   │   │   ├── Pods-CoffeeQuest.modulemap
│   │   │   │   │   ├── Pods-CoffeeQuest.release.xcconfig
│   │   │   │   │   ├── Pods-CoffeeQuest-resources.sh
│   │   │   │   │   └── Pods-CoffeeQuest-umbrella.h
│   │   │   │   └── YelpAPI
│   │   │   │   ├── Info.plist
│   │   │   │   ├── YelpAPI-dummy.m
│   │   │   │   ├── YelpAPI.modulemap
│   │   │   │   ├── YelpAPI-prefix.pch
│   │   │   │   ├── YelpAPI-umbrella.h
│   │   │   │   └── YelpAPI.xcconfig
│   │   │   └── YelpAPI
│   │   │   ├── Classes
│   │   │   │   ├── Client
│   │   │   │   │   ├── YLPClient+Business.h
│   │   │   │   │   ├── YLPClient+Business.m
│   │   │   │   │   ├── YLPClient.h
│   │   │   │   │   ├── YLPClient.m
│   │   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   │   ├── YLPClient+Search.h
│   │   │   │   │   └── YLPClient+Search.m
│   │   │   │   ├── Common
│   │   │   │   │   ├── YLPCoordinate.h
│   │   │   │   │   └── YLPCoordinate.m
│   │   │   │   ├── Request
│   │   │   │   │   ├── YLPQuery.h
│   │   │   │   │   ├── YLPQuery.m
│   │   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   │   └── YLPSortType.h
│   │   │   │   ├── Response
│   │   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   │   ├── YLPBusiness.h
│   │   │   │   │   ├── YLPBusiness.m
│   │   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   │   ├── YLPCategory.h
│   │   │   │   │   ├── YLPCategory.m
│   │   │   │   │   ├── YLPLocation.h
│   │   │   │   │   ├── YLPLocation.m
│   │   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   │   ├── YLPReview.h
│   │   │   │   │   ├── YLPReview.m
│   │   │   │   │   ├── YLPSearch.h
│   │   │   │   │   ├── YLPSearch.m
│   │   │   │   │   ├── YLPUser.h
│   │   │   │   │   └── YLPUser.m
│   │   │   │   └── YelpAPI.h
│   │   │   ├── LICENSE
│   │   │   └── README.md
│   │   └── IntermediateDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── IntermediateDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Adapter_Diagram.png
│   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Facade_Diagram.png
│   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Factory_Diagram.png
│   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Iterator_Diagram.png
│   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   ├── MVVM_Diagram.png
│   │   │   │   └── stuart.png
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Prototype_Diagram.png
│   │   │   └── State.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── State_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── CoffeeQuest
│   │   ├── CoffeeQuest
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Models
│   │   │   │   └── MapPin.swift
│   │   │   ├── Resources
│   │   │   │   ├── APIKeys.swift
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── bad.imageset
│   │   │   │   │   │   ├── bad@2x.png
│   │   │   │   │   │   ├── bad@3x.png
│   │   │   │   │   │   ├── bad.png
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── good.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── good@2x.png
│   │   │   │   │   │   ├── good@3x.png
│   │   │   │   │   │   └── good.png
│   │   │   │   │   ├── great.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── great@2x.png
│   │   │   │   │   │   ├── great@3x.png
│   │   │   │   │   │   └── great.png
│   │   │   │   │   ├── Launch.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Launch@2x.png
│   │   │   │   │   │   ├── Launch@3x.png
│   │   │   │   │   │   └── Launch.png
│   │   │   │   │   ├── meh.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── meh@2x.png
│   │   │   │   │   │   ├── meh@3x.png
│   │   │   │   │   │   └── meh.png
│   │   │   │   │   └── terrible.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── terrible@2x.png
│   │   │   │   │   ├── terrible@3x.png
│   │   │   │   │   └── terrible.png
│   │   │   │   └── Info.plist
│   │   │   └── Views
│   │   │   └── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── CoffeeQuest.xcodeproj
│   │   │   ├── project.pbxproj
│   │   │   └── project.xcworkspace
│   │   │   └── contents.xcworkspacedata
│   │   ├── CoffeeQuest.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   ├── Podfile
│   │   ├── Podfile.lock
│   │   └── Pods
│   │   ├── Manifest.lock
│   │   ├── Pods.xcodeproj
│   │   │   └── project.pbxproj
│   │   ├── Target Support Files
│   │   │   ├── Pods-CoffeeQuest
│   │   │   │   ├── Info.plist
│   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.markdown
│   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.plist
│   │   │   │   ├── Pods-CoffeeQuest.debug.xcconfig
│   │   │   │   ├── Pods-CoffeeQuest-dummy.m
│   │   │   │   ├── Pods-CoffeeQuest-frameworks.sh
│   │   │   │   ├── Pods-CoffeeQuest.modulemap
│   │   │   │   ├── Pods-CoffeeQuest.release.xcconfig
│   │   │   │   ├── Pods-CoffeeQuest-resources.sh
│   │   │   │   └── Pods-CoffeeQuest-umbrella.h
│   │   │   └── YelpAPI
│   │   │   ├── Info.plist
│   │   │   ├── YelpAPI-dummy.m
│   │   │   ├── YelpAPI.modulemap
│   │   │   ├── YelpAPI-prefix.pch
│   │   │   ├── YelpAPI-umbrella.h
│   │   │   └── YelpAPI.xcconfig
│   │   └── YelpAPI
│   │   ├── Classes
│   │   │   ├── Client
│   │   │   │   ├── YLPClient+Business.h
│   │   │   │   ├── YLPClient+Business.m
│   │   │   │   ├── YLPClient.h
│   │   │   │   ├── YLPClient.m
│   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   ├── YLPClient+Search.h
│   │   │   │   └── YLPClient+Search.m
│   │   │   ├── Common
│   │   │   │   ├── YLPCoordinate.h
│   │   │   │   └── YLPCoordinate.m
│   │   │   ├── Request
│   │   │   │   ├── YLPQuery.h
│   │   │   │   ├── YLPQuery.m
│   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   └── YLPSortType.h
│   │   │   ├── Response
│   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   ├── YLPBusiness.h
│   │   │   │   ├── YLPBusiness.m
│   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   ├── YLPCategory.h
│   │   │   │   ├── YLPCategory.m
│   │   │   │   ├── YLPLocation.h
│   │   │   │   ├── YLPLocation.m
│   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   ├── YLPReview.h
│   │   │   │   ├── YLPReview.m
│   │   │   │   ├── YLPSearch.h
│   │   │   │   ├── YLPSearch.m
│   │   │   │   ├── YLPUser.h
│   │   │   │   └── YLPUser.m
│   │   │   └── YelpAPI.h
│   │   ├── LICENSE
│   │   └── README.md
│   └── IntermediateDesignPatterns.xcworkspace
│   ├── contents.xcworkspacedata
│   ├── IntermediateDesignPatterns.playground
│   │   ├── contents.xcplayground
│   │   └── Pages
│   │   ├── Adapter.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Adapter_Diagram.png
│   │   ├── Facade.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Facade_Diagram.png
│   │   ├── Factory.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Factory_Diagram.png
│   │   ├── Iterator.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Iterator_Diagram.png
│   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   ├── Resources
│   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   └── Sources
│   │   │   └── MulticastDelegate.swift
│   │   ├── MVVM.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   ├── MVVM_Diagram.png
│   │   │   └── stuart.png
│   │   ├── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── Prototype.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Prototype_Diagram.png
│   │   └── State.xcplaygroundpage
│   │   ├── Contents.swift
│   │   └── Resources
│   │   └── State_Diagram.png
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 11-factory-pattern
│   ├── final
│   │   ├── CoffeeQuest
│   │   │   ├── CoffeeQuest
│   │   │   │   ├── AppDelegate
│   │   │   │   │   └── AppDelegate.swift
│   │   │   │   ├── Controllers
│   │   │   │   │   └── ViewController.swift
│   │   │   │   ├── Factories
│   │   │   │   │   └── AnnotationFactory.swift
│   │   │   │   ├── Resources
│   │   │   │   │   ├── APIKeys.swift
│   │   │   │   │   ├── Assets.xcassets
│   │   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   │   ├── bad.imageset
│   │   │   │   │   │   │   ├── bad@2x.png
│   │   │   │   │   │   │   ├── bad@3x.png
│   │   │   │   │   │   │   ├── bad.png
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── good.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── good@2x.png
│   │   │   │   │   │   │   ├── good@3x.png
│   │   │   │   │   │   │   └── good.png
│   │   │   │   │   │   ├── great.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── great@2x.png
│   │   │   │   │   │   │   ├── great@3x.png
│   │   │   │   │   │   │   └── great.png
│   │   │   │   │   │   ├── Launch.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── Launch@2x.png
│   │   │   │   │   │   │   ├── Launch@3x.png
│   │   │   │   │   │   │   └── Launch.png
│   │   │   │   │   │   ├── meh.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── meh@2x.png
│   │   │   │   │   │   │   ├── meh@3x.png
│   │   │   │   │   │   │   └── meh.png
│   │   │   │   │   │   └── terrible.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── terrible@2x.png
│   │   │   │   │   │   ├── terrible@3x.png
│   │   │   │   │   │   └── terrible.png
│   │   │   │   │   └── Info.plist
│   │   │   │   ├── ViewModels
│   │   │   │   │   └── BusinessMapViewModel.swift
│   │   │   │   └── Views
│   │   │   │   └── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   ├── CoffeeQuest.xcodeproj
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── project.xcworkspace
│   │   │   │   └── contents.xcworkspacedata
│   │   │   ├── CoffeeQuest.xcworkspace
│   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   └── xcshareddata
│   │   │   │   └── IDEWorkspaceChecks.plist
│   │   │   ├── Podfile
│   │   │   ├── Podfile.lock
│   │   │   └── Pods
│   │   │   ├── Manifest.lock
│   │   │   ├── Pods.xcodeproj
│   │   │   │   └── project.pbxproj
│   │   │   ├── Target Support Files
│   │   │   │   ├── Pods-CoffeeQuest
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.markdown
│   │   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.plist
│   │   │   │   │   ├── Pods-CoffeeQuest.debug.xcconfig
│   │   │   │   │   ├── Pods-CoffeeQuest-dummy.m
│   │   │   │   │   ├── Pods-CoffeeQuest-frameworks.sh
│   │   │   │   │   ├── Pods-CoffeeQuest.modulemap
│   │   │   │   │   ├── Pods-CoffeeQuest.release.xcconfig
│   │   │   │   │   ├── Pods-CoffeeQuest-resources.sh
│   │   │   │   │   └── Pods-CoffeeQuest-umbrella.h
│   │   │   │   └── YelpAPI
│   │   │   │   ├── Info.plist
│   │   │   │   ├── YelpAPI-dummy.m
│   │   │   │   ├── YelpAPI.modulemap
│   │   │   │   ├── YelpAPI-prefix.pch
│   │   │   │   ├── YelpAPI-umbrella.h
│   │   │   │   └── YelpAPI.xcconfig
│   │   │   └── YelpAPI
│   │   │   ├── Classes
│   │   │   │   ├── Client
│   │   │   │   │   ├── YLPClient+Business.h
│   │   │   │   │   ├── YLPClient+Business.m
│   │   │   │   │   ├── YLPClient.h
│   │   │   │   │   ├── YLPClient.m
│   │   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   │   ├── YLPClient+Search.h
│   │   │   │   │   └── YLPClient+Search.m
│   │   │   │   ├── Common
│   │   │   │   │   ├── YLPCoordinate.h
│   │   │   │   │   └── YLPCoordinate.m
│   │   │   │   ├── Request
│   │   │   │   │   ├── YLPQuery.h
│   │   │   │   │   ├── YLPQuery.m
│   │   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   │   └── YLPSortType.h
│   │   │   │   ├── Response
│   │   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   │   ├── YLPBusiness.h
│   │   │   │   │   ├── YLPBusiness.m
│   │   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   │   ├── YLPCategory.h
│   │   │   │   │   ├── YLPCategory.m
│   │   │   │   │   ├── YLPLocation.h
│   │   │   │   │   ├── YLPLocation.m
│   │   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   │   ├── YLPReview.h
│   │   │   │   │   ├── YLPReview.m
│   │   │   │   │   ├── YLPSearch.h
│   │   │   │   │   ├── YLPSearch.m
│   │   │   │   │   ├── YLPUser.h
│   │   │   │   │   └── YLPUser.m
│   │   │   │   └── YelpAPI.h
│   │   │   ├── LICENSE
│   │   │   └── README.md
│   │   └── IntermediateDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── IntermediateDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Adapter_Diagram.png
│   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Facade_Diagram.png
│   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Factory_Diagram.png
│   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Iterator_Diagram.png
│   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVVM_Diagram.png
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Prototype_Diagram.png
│   │   │   └── State.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── State_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── CoffeeQuest
│   │   ├── CoffeeQuest
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Resources
│   │   │   │   ├── APIKeys.swift
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── bad.imageset
│   │   │   │   │   │   ├── bad@2x.png
│   │   │   │   │   │   ├── bad@3x.png
│   │   │   │   │   │   ├── bad.png
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── good.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── good@2x.png
│   │   │   │   │   │   ├── good@3x.png
│   │   │   │   │   │   └── good.png
│   │   │   │   │   ├── great.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── great@2x.png
│   │   │   │   │   │   ├── great@3x.png
│   │   │   │   │   │   └── great.png
│   │   │   │   │   ├── Launch.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Launch@2x.png
│   │   │   │   │   │   ├── Launch@3x.png
│   │   │   │   │   │   └── Launch.png
│   │   │   │   │   ├── meh.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── meh@2x.png
│   │   │   │   │   │   ├── meh@3x.png
│   │   │   │   │   │   └── meh.png
│   │   │   │   │   └── terrible.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── terrible@2x.png
│   │   │   │   │   ├── terrible@3x.png
│   │   │   │   │   └── terrible.png
│   │   │   │   └── Info.plist
│   │   │   ├── ViewModels
│   │   │   │   └── BusinessMapViewModel.swift
│   │   │   └── Views
│   │   │   └── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── CoffeeQuest.xcodeproj
│   │   │   ├── project.pbxproj
│   │   │   └── project.xcworkspace
│   │   │   └── contents.xcworkspacedata
│   │   ├── CoffeeQuest.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   ├── Podfile
│   │   ├── Podfile.lock
│   │   └── Pods
│   │   ├── Manifest.lock
│   │   ├── Pods.xcodeproj
│   │   │   └── project.pbxproj
│   │   ├── Target Support Files
│   │   │   ├── Pods-CoffeeQuest
│   │   │   │   ├── Info.plist
│   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.markdown
│   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.plist
│   │   │   │   ├── Pods-CoffeeQuest.debug.xcconfig
│   │   │   │   ├── Pods-CoffeeQuest-dummy.m
│   │   │   │   ├── Pods-CoffeeQuest-frameworks.sh
│   │   │   │   ├── Pods-CoffeeQuest.modulemap
│   │   │   │   ├── Pods-CoffeeQuest.release.xcconfig
│   │   │   │   ├── Pods-CoffeeQuest-resources.sh
│   │   │   │   └── Pods-CoffeeQuest-umbrella.h
│   │   │   └── YelpAPI
│   │   │   ├── Info.plist
│   │   │   ├── YelpAPI-dummy.m
│   │   │   ├── YelpAPI.modulemap
│   │   │   ├── YelpAPI-prefix.pch
│   │   │   ├── YelpAPI-umbrella.h
│   │   │   └── YelpAPI.xcconfig
│   │   └── YelpAPI
│   │   ├── Classes
│   │   │   ├── Client
│   │   │   │   ├── YLPClient+Business.h
│   │   │   │   ├── YLPClient+Business.m
│   │   │   │   ├── YLPClient.h
│   │   │   │   ├── YLPClient.m
│   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   ├── YLPClient+Search.h
│   │   │   │   └── YLPClient+Search.m
│   │   │   ├── Common
│   │   │   │   ├── YLPCoordinate.h
│   │   │   │   └── YLPCoordinate.m
│   │   │   ├── Request
│   │   │   │   ├── YLPQuery.h
│   │   │   │   ├── YLPQuery.m
│   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   └── YLPSortType.h
│   │   │   ├── Response
│   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   ├── YLPBusiness.h
│   │   │   │   ├── YLPBusiness.m
│   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   ├── YLPCategory.h
│   │   │   │   ├── YLPCategory.m
│   │   │   │   ├── YLPLocation.h
│   │   │   │   ├── YLPLocation.m
│   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   ├── YLPReview.h
│   │   │   │   ├── YLPReview.m
│   │   │   │   ├── YLPSearch.h
│   │   │   │   ├── YLPSearch.m
│   │   │   │   ├── YLPUser.h
│   │   │   │   └── YLPUser.m
│   │   │   └── YelpAPI.h
│   │   ├── LICENSE
│   │   └── README.md
│   └── IntermediateDesignPatterns.xcworkspace
│   ├── contents.xcworkspacedata
│   ├── IntermediateDesignPatterns.playground
│   │   ├── contents.xcplayground
│   │   └── Pages
│   │   ├── Adapter.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Adapter_Diagram.png
│   │   ├── Facade.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Facade_Diagram.png
│   │   ├── Factory.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Factory_Diagram.png
│   │   ├── Iterator.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Iterator_Diagram.png
│   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   ├── Resources
│   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   └── Sources
│   │   │   └── MulticastDelegate.swift
│   │   ├── MVVM.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── MVVM_Diagram.png
│   │   ├── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── Prototype.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Prototype_Diagram.png
│   │   └── State.xcplaygroundpage
│   │   ├── Contents.swift
│   │   └── Resources
│   │   └── State_Diagram.png
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 12-adapter-pattern
│   ├── final
│   │   ├── CoffeeQuest
│   │   │   ├── CoffeeQuest
│   │   │   │   ├── AppDelegate
│   │   │   │   │   └── AppDelegate.swift
│   │   │   │   ├── Controllers
│   │   │   │   │   └── ViewController.swift
│   │   │   │   ├── Factories
│   │   │   │   │   └── AnnotationFactory.swift
│   │   │   │   ├── Models
│   │   │   │   │   └── Protocols.swift
│   │   │   │   ├── Resources
│   │   │   │   │   ├── APIKeys.swift
│   │   │   │   │   ├── Assets.xcassets
│   │   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   │   ├── bad.imageset
│   │   │   │   │   │   │   ├── bad@2x.png
│   │   │   │   │   │   │   ├── bad@3x.png
│   │   │   │   │   │   │   ├── bad.png
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── good.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── good@2x.png
│   │   │   │   │   │   │   ├── good@3x.png
│   │   │   │   │   │   │   └── good.png
│   │   │   │   │   │   ├── great.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── great@2x.png
│   │   │   │   │   │   │   ├── great@3x.png
│   │   │   │   │   │   │   └── great.png
│   │   │   │   │   │   ├── Launch.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── Launch@2x.png
│   │   │   │   │   │   │   ├── Launch@3x.png
│   │   │   │   │   │   │   └── Launch.png
│   │   │   │   │   │   ├── meh.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── meh@2x.png
│   │   │   │   │   │   │   ├── meh@3x.png
│   │   │   │   │   │   │   └── meh.png
│   │   │   │   │   │   └── terrible.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── terrible@2x.png
│   │   │   │   │   │   ├── terrible@3x.png
│   │   │   │   │   │   └── terrible.png
│   │   │   │   │   └── Info.plist
│   │   │   │   ├── ViewModels
│   │   │   │   │   └── BusinessMapViewModel.swift
│   │   │   │   └── Views
│   │   │   │   └── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   ├── CoffeeQuest.xcodeproj
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── project.xcworkspace
│   │   │   │   └── contents.xcworkspacedata
│   │   │   ├── CoffeeQuest.xcworkspace
│   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   └── xcshareddata
│   │   │   │   └── IDEWorkspaceChecks.plist
│   │   │   ├── Podfile
│   │   │   ├── Podfile.lock
│   │   │   └── Pods
│   │   │   ├── Manifest.lock
│   │   │   ├── Pods.xcodeproj
│   │   │   │   └── project.pbxproj
│   │   │   ├── Target Support Files
│   │   │   │   ├── Pods-CoffeeQuest
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.markdown
│   │   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.plist
│   │   │   │   │   ├── Pods-CoffeeQuest.debug.xcconfig
│   │   │   │   │   ├── Pods-CoffeeQuest-dummy.m
│   │   │   │   │   ├── Pods-CoffeeQuest-frameworks.sh
│   │   │   │   │   ├── Pods-CoffeeQuest.modulemap
│   │   │   │   │   ├── Pods-CoffeeQuest.release.xcconfig
│   │   │   │   │   ├── Pods-CoffeeQuest-resources.sh
│   │   │   │   │   └── Pods-CoffeeQuest-umbrella.h
│   │   │   │   └── YelpAPI
│   │   │   │   ├── Info.plist
│   │   │   │   ├── YelpAPI-dummy.m
│   │   │   │   ├── YelpAPI.modulemap
│   │   │   │   ├── YelpAPI-prefix.pch
│   │   │   │   ├── YelpAPI-umbrella.h
│   │   │   │   └── YelpAPI.xcconfig
│   │   │   └── YelpAPI
│   │   │   ├── Classes
│   │   │   │   ├── Client
│   │   │   │   │   ├── YLPClient+Business.h
│   │   │   │   │   ├── YLPClient+Business.m
│   │   │   │   │   ├── YLPClient.h
│   │   │   │   │   ├── YLPClient.m
│   │   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   │   ├── YLPClient+Search.h
│   │   │   │   │   └── YLPClient+Search.m
│   │   │   │   ├── Common
│   │   │   │   │   ├── YLPCoordinate.h
│   │   │   │   │   └── YLPCoordinate.m
│   │   │   │   ├── Request
│   │   │   │   │   ├── YLPQuery.h
│   │   │   │   │   ├── YLPQuery.m
│   │   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   │   └── YLPSortType.h
│   │   │   │   ├── Response
│   │   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   │   ├── YLPBusiness.h
│   │   │   │   │   ├── YLPBusiness.m
│   │   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   │   ├── YLPCategory.h
│   │   │   │   │   ├── YLPCategory.m
│   │   │   │   │   ├── YLPLocation.h
│   │   │   │   │   ├── YLPLocation.m
│   │   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   │   ├── YLPReview.h
│   │   │   │   │   ├── YLPReview.m
│   │   │   │   │   ├── YLPSearch.h
│   │   │   │   │   ├── YLPSearch.m
│   │   │   │   │   ├── YLPUser.h
│   │   │   │   │   └── YLPUser.m
│   │   │   │   └── YelpAPI.h
│   │   │   ├── LICENSE
│   │   │   └── README.md
│   │   └── IntermediateDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── IntermediateDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Adapter_Diagram.png
│   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Facade_Diagram.png
│   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Factory_Diagram.png
│   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Iterator_Diagram.png
│   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVVM_Diagram.png
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Prototype_Diagram.png
│   │   │   └── State.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── State_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── CoffeeQuest
│   │   ├── CoffeeQuest
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Factories
│   │   │   │   └── AnnotationFactory.swift
│   │   │   ├── Resources
│   │   │   │   ├── APIKeys.swift
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── bad.imageset
│   │   │   │   │   │   ├── bad@2x.png
│   │   │   │   │   │   ├── bad@3x.png
│   │   │   │   │   │   ├── bad.png
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── good.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── good@2x.png
│   │   │   │   │   │   ├── good@3x.png
│   │   │   │   │   │   └── good.png
│   │   │   │   │   ├── great.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── great@2x.png
│   │   │   │   │   │   ├── great@3x.png
│   │   │   │   │   │   └── great.png
│   │   │   │   │   ├── Launch.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Launch@2x.png
│   │   │   │   │   │   ├── Launch@3x.png
│   │   │   │   │   │   └── Launch.png
│   │   │   │   │   ├── meh.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── meh@2x.png
│   │   │   │   │   │   ├── meh@3x.png
│   │   │   │   │   │   └── meh.png
│   │   │   │   │   └── terrible.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── terrible@2x.png
│   │   │   │   │   ├── terrible@3x.png
│   │   │   │   │   └── terrible.png
│   │   │   │   └── Info.plist
│   │   │   ├── ViewModels
│   │   │   │   └── BusinessMapViewModel.swift
│   │   │   └── Views
│   │   │   └── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── CoffeeQuest.xcodeproj
│   │   │   ├── project.pbxproj
│   │   │   └── project.xcworkspace
│   │   │   └── contents.xcworkspacedata
│   │   ├── CoffeeQuest.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   ├── Podfile
│   │   ├── Podfile.lock
│   │   └── Pods
│   │   ├── Manifest.lock
│   │   ├── Pods.xcodeproj
│   │   │   └── project.pbxproj
│   │   ├── Target Support Files
│   │   │   ├── Pods-CoffeeQuest
│   │   │   │   ├── Info.plist
│   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.markdown
│   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.plist
│   │   │   │   ├── Pods-CoffeeQuest.debug.xcconfig
│   │   │   │   ├── Pods-CoffeeQuest-dummy.m
│   │   │   │   ├── Pods-CoffeeQuest-frameworks.sh
│   │   │   │   ├── Pods-CoffeeQuest.modulemap
│   │   │   │   ├── Pods-CoffeeQuest.release.xcconfig
│   │   │   │   ├── Pods-CoffeeQuest-resources.sh
│   │   │   │   └── Pods-CoffeeQuest-umbrella.h
│   │   │   └── YelpAPI
│   │   │   ├── Info.plist
│   │   │   ├── YelpAPI-dummy.m
│   │   │   ├── YelpAPI.modulemap
│   │   │   ├── YelpAPI-prefix.pch
│   │   │   ├── YelpAPI-umbrella.h
│   │   │   └── YelpAPI.xcconfig
│   │   └── YelpAPI
│   │   ├── Classes
│   │   │   ├── Client
│   │   │   │   ├── YLPClient+Business.h
│   │   │   │   ├── YLPClient+Business.m
│   │   │   │   ├── YLPClient.h
│   │   │   │   ├── YLPClient.m
│   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   ├── YLPClient+Search.h
│   │   │   │   └── YLPClient+Search.m
│   │   │   ├── Common
│   │   │   │   ├── YLPCoordinate.h
│   │   │   │   └── YLPCoordinate.m
│   │   │   ├── Request
│   │   │   │   ├── YLPQuery.h
│   │   │   │   ├── YLPQuery.m
│   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   └── YLPSortType.h
│   │   │   ├── Response
│   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   ├── YLPBusiness.h
│   │   │   │   ├── YLPBusiness.m
│   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   ├── YLPCategory.h
│   │   │   │   ├── YLPCategory.m
│   │   │   │   ├── YLPLocation.h
│   │   │   │   ├── YLPLocation.m
│   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   ├── YLPReview.h
│   │   │   │   ├── YLPReview.m
│   │   │   │   ├── YLPSearch.h
│   │   │   │   ├── YLPSearch.m
│   │   │   │   ├── YLPUser.h
│   │   │   │   └── YLPUser.m
│   │   │   └── YelpAPI.h
│   │   ├── LICENSE
│   │   └── README.md
│   └── IntermediateDesignPatterns.xcworkspace
│   ├── contents.xcworkspacedata
│   ├── IntermediateDesignPatterns.playground
│   │   ├── contents.xcplayground
│   │   └── Pages
│   │   ├── Adapter.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Adapter_Diagram.png
│   │   ├── Facade.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Facade_Diagram.png
│   │   ├── Factory.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Factory_Diagram.png
│   │   ├── Iterator.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Iterator_Diagram.png
│   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   ├── Resources
│   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   └── Sources
│   │   │   └── MulticastDelegate.swift
│   │   ├── MVVM.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── MVVM_Diagram.png
│   │   ├── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── Prototype.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Prototype_Diagram.png
│   │   └── State.xcplaygroundpage
│   │   ├── Contents.swift
│   │   └── Resources
│   │   └── State_Diagram.png
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 13-iterator-pattern
│   ├── final
│   │   ├── CoffeeQuest
│   │   │   ├── CoffeeQuest
│   │   │   │   ├── AppDelegate
│   │   │   │   │   └── AppDelegate.swift
│   │   │   │   ├── Controllers
│   │   │   │   │   └── ViewController.swift
│   │   │   │   ├── Factories
│   │   │   │   │   └── AnnotationFactory.swift
│   │   │   │   ├── Models
│   │   │   │   │   ├── Filter.swift
│   │   │   │   │   └── Protocols.swift
│   │   │   │   ├── Resources
│   │   │   │   │   ├── APIKeys.swift
│   │   │   │   │   ├── Assets.xcassets
│   │   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   │   ├── bad.imageset
│   │   │   │   │   │   │   ├── bad@2x.png
│   │   │   │   │   │   │   ├── bad@3x.png
│   │   │   │   │   │   │   ├── bad.png
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── good.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── good@2x.png
│   │   │   │   │   │   │   ├── good@3x.png
│   │   │   │   │   │   │   └── good.png
│   │   │   │   │   │   ├── great.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── great@2x.png
│   │   │   │   │   │   │   ├── great@3x.png
│   │   │   │   │   │   │   └── great.png
│   │   │   │   │   │   ├── Launch.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── Launch@2x.png
│   │   │   │   │   │   │   ├── Launch@3x.png
│   │   │   │   │   │   │   └── Launch.png
│   │   │   │   │   │   ├── meh.imageset
│   │   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   │   ├── meh@2x.png
│   │   │   │   │   │   │   ├── meh@3x.png
│   │   │   │   │   │   │   └── meh.png
│   │   │   │   │   │   └── terrible.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── terrible@2x.png
│   │   │   │   │   │   ├── terrible@3x.png
│   │   │   │   │   │   └── terrible.png
│   │   │   │   │   └── Info.plist
│   │   │   │   ├── ViewModels
│   │   │   │   │   └── BusinessMapViewModel.swift
│   │   │   │   └── Views
│   │   │   │   └── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   ├── CoffeeQuest.xcodeproj
│   │   │   │   ├── project.pbxproj
│   │   │   │   └── project.xcworkspace
│   │   │   │   └── contents.xcworkspacedata
│   │   │   ├── CoffeeQuest.xcworkspace
│   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   └── xcshareddata
│   │   │   │   └── IDEWorkspaceChecks.plist
│   │   │   ├── Podfile
│   │   │   ├── Podfile.lock
│   │   │   └── Pods
│   │   │   ├── Manifest.lock
│   │   │   ├── Pods.xcodeproj
│   │   │   │   └── project.pbxproj
│   │   │   ├── Target Support Files
│   │   │   │   ├── Pods-CoffeeQuest
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.markdown
│   │   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.plist
│   │   │   │   │   ├── Pods-CoffeeQuest.debug.xcconfig
│   │   │   │   │   ├── Pods-CoffeeQuest-dummy.m
│   │   │   │   │   ├── Pods-CoffeeQuest-frameworks.sh
│   │   │   │   │   ├── Pods-CoffeeQuest.modulemap
│   │   │   │   │   ├── Pods-CoffeeQuest.release.xcconfig
│   │   │   │   │   ├── Pods-CoffeeQuest-resources.sh
│   │   │   │   │   └── Pods-CoffeeQuest-umbrella.h
│   │   │   │   └── YelpAPI
│   │   │   │   ├── Info.plist
│   │   │   │   ├── YelpAPI-dummy.m
│   │   │   │   ├── YelpAPI.modulemap
│   │   │   │   ├── YelpAPI-prefix.pch
│   │   │   │   ├── YelpAPI-umbrella.h
│   │   │   │   └── YelpAPI.xcconfig
│   │   │   └── YelpAPI
│   │   │   ├── Classes
│   │   │   │   ├── Client
│   │   │   │   │   ├── YLPClient+Business.h
│   │   │   │   │   ├── YLPClient+Business.m
│   │   │   │   │   ├── YLPClient.h
│   │   │   │   │   ├── YLPClient.m
│   │   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   │   ├── YLPClient+Search.h
│   │   │   │   │   └── YLPClient+Search.m
│   │   │   │   ├── Common
│   │   │   │   │   ├── YLPCoordinate.h
│   │   │   │   │   └── YLPCoordinate.m
│   │   │   │   ├── Request
│   │   │   │   │   ├── YLPQuery.h
│   │   │   │   │   ├── YLPQuery.m
│   │   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   │   └── YLPSortType.h
│   │   │   │   ├── Response
│   │   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   │   ├── YLPBusiness.h
│   │   │   │   │   ├── YLPBusiness.m
│   │   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   │   ├── YLPCategory.h
│   │   │   │   │   ├── YLPCategory.m
│   │   │   │   │   ├── YLPLocation.h
│   │   │   │   │   ├── YLPLocation.m
│   │   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   │   ├── YLPReview.h
│   │   │   │   │   ├── YLPReview.m
│   │   │   │   │   ├── YLPSearch.h
│   │   │   │   │   ├── YLPSearch.m
│   │   │   │   │   ├── YLPUser.h
│   │   │   │   │   └── YLPUser.m
│   │   │   │   └── YelpAPI.h
│   │   │   ├── LICENSE
│   │   │   └── README.md
│   │   └── IntermediateDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── IntermediateDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Adapter_Diagram.png
│   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Facade_Diagram.png
│   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Factory_Diagram.png
│   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Iterator_Diagram.png
│   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVVM_Diagram.png
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Prototype_Diagram.png
│   │   │   └── State.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── State_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── CoffeeQuest
│   │   ├── CoffeeQuest
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Factories
│   │   │   │   └── AnnotationFactory.swift
│   │   │   ├── Models
│   │   │   │   └── Protocols.swift
│   │   │   ├── Resources
│   │   │   │   ├── APIKeys.swift
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── bad.imageset
│   │   │   │   │   │   ├── bad@2x.png
│   │   │   │   │   │   ├── bad@3x.png
│   │   │   │   │   │   ├── bad.png
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── good.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── good@2x.png
│   │   │   │   │   │   ├── good@3x.png
│   │   │   │   │   │   └── good.png
│   │   │   │   │   ├── great.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── great@2x.png
│   │   │   │   │   │   ├── great@3x.png
│   │   │   │   │   │   └── great.png
│   │   │   │   │   ├── Launch.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Launch@2x.png
│   │   │   │   │   │   ├── Launch@3x.png
│   │   │   │   │   │   └── Launch.png
│   │   │   │   │   ├── meh.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── meh@2x.png
│   │   │   │   │   │   ├── meh@3x.png
│   │   │   │   │   │   └── meh.png
│   │   │   │   │   └── terrible.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── terrible@2x.png
│   │   │   │   │   ├── terrible@3x.png
│   │   │   │   │   └── terrible.png
│   │   │   │   └── Info.plist
│   │   │   ├── ViewModels
│   │   │   │   └── BusinessMapViewModel.swift
│   │   │   └── Views
│   │   │   └── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── CoffeeQuest.xcodeproj
│   │   │   ├── project.pbxproj
│   │   │   └── project.xcworkspace
│   │   │   └── contents.xcworkspacedata
│   │   ├── CoffeeQuest.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   ├── Podfile
│   │   ├── Podfile.lock
│   │   └── Pods
│   │   ├── Manifest.lock
│   │   ├── Pods.xcodeproj
│   │   │   └── project.pbxproj
│   │   ├── Target Support Files
│   │   │   ├── Pods-CoffeeQuest
│   │   │   │   ├── Info.plist
│   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.markdown
│   │   │   │   ├── Pods-CoffeeQuest-acknowledgements.plist
│   │   │   │   ├── Pods-CoffeeQuest.debug.xcconfig
│   │   │   │   ├── Pods-CoffeeQuest-dummy.m
│   │   │   │   ├── Pods-CoffeeQuest-frameworks.sh
│   │   │   │   ├── Pods-CoffeeQuest.modulemap
│   │   │   │   ├── Pods-CoffeeQuest.release.xcconfig
│   │   │   │   ├── Pods-CoffeeQuest-resources.sh
│   │   │   │   └── Pods-CoffeeQuest-umbrella.h
│   │   │   └── YelpAPI
│   │   │   ├── Info.plist
│   │   │   ├── YelpAPI-dummy.m
│   │   │   ├── YelpAPI.modulemap
│   │   │   ├── YelpAPI-prefix.pch
│   │   │   ├── YelpAPI-umbrella.h
│   │   │   └── YelpAPI.xcconfig
│   │   └── YelpAPI
│   │   ├── Classes
│   │   │   ├── Client
│   │   │   │   ├── YLPClient+Business.h
│   │   │   │   ├── YLPClient+Business.m
│   │   │   │   ├── YLPClient.h
│   │   │   │   ├── YLPClient.m
│   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   ├── YLPClient+Search.h
│   │   │   │   └── YLPClient+Search.m
│   │   │   ├── Common
│   │   │   │   ├── YLPCoordinate.h
│   │   │   │   └── YLPCoordinate.m
│   │   │   ├── Request
│   │   │   │   ├── YLPQuery.h
│   │   │   │   ├── YLPQuery.m
│   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   └── YLPSortType.h
│   │   │   ├── Response
│   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   ├── YLPBusiness.h
│   │   │   │   ├── YLPBusiness.m
│   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   ├── YLPCategory.h
│   │   │   │   ├── YLPCategory.m
│   │   │   │   ├── YLPLocation.h
│   │   │   │   ├── YLPLocation.m
│   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   ├── YLPReview.h
│   │   │   │   ├── YLPReview.m
│   │   │   │   ├── YLPSearch.h
│   │   │   │   ├── YLPSearch.m
│   │   │   │   ├── YLPUser.h
│   │   │   │   └── YLPUser.m
│   │   │   └── YelpAPI.h
│   │   ├── LICENSE
│   │   └── README.md
│   └── IntermediateDesignPatterns.xcworkspace
│   ├── contents.xcworkspacedata
│   ├── IntermediateDesignPatterns.playground
│   │   ├── contents.xcplayground
│   │   └── Pages
│   │   ├── Adapter.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Adapter_Diagram.png
│   │   ├── Facade.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Facade_Diagram.png
│   │   ├── Factory.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Factory_Diagram.png
│   │   ├── Iterator.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Iterator_Diagram.png
│   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   ├── Resources
│   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   └── Sources
│   │   │   └── MulticastDelegate.swift
│   │   ├── MVVM.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── MVVM_Diagram.png
│   │   ├── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── Prototype.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── Prototype_Diagram.png
│   │   └── State.xcplaygroundpage
│   │   ├── Contents.swift
│   │   └── Resources
│   │   └── State_Diagram.png
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 14-prototype-pattern
│   ├── final
│   │   ├── IntermediateDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── IntermediateDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Adapter_Diagram.png
│   │   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Facade_Diagram.png
│   │   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Factory_Diagram.png
│   │   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Iterator_Diagram.png
│   │   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── MulticastDelegate.swift
│   │   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVVM_Diagram.png
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Prototype_Diagram.png
│   │   │   │   └── State.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── State_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── MirrorPad
│   │   ├── MirrorPad
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Protocols
│   │   │   │   └── Copying.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── expand_arrows.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── expand_arrows.pdf
│   │   │   │   │   └── launch_background.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── launch_background@2x.png
│   │   │   │   │   ├── launch_background@3x.png
│   │   │   │   │   └── launch_background.png
│   │   │   │   └── Info.plist
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   ├── DrawView.swift
│   │   │   └── LineShape.swift
│   │   └── MirrorPad.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── IntermediateDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── IntermediateDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Adapter_Diagram.png
│   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Facade_Diagram.png
│   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Factory_Diagram.png
│   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Iterator_Diagram.png
│   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVVM_Diagram.png
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Prototype_Diagram.png
│   │   │   └── State.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── State_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── MirrorPad
│   ├── MirrorPad
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   └── ViewController.swift
│   │   ├── Protocols
│   │   │   └── Copying.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── expand_arrows.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── expand_arrows.pdf
│   │   │   │   └── launch_background.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   ├── launch_background@2x.png
│   │   │   │   ├── launch_background@3x.png
│   │   │   │   └── launch_background.png
│   │   │   └── Info.plist
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── DrawView.swift
│   │   └── LineShape.swift
│   └── MirrorPad.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 15-state-pattern
│   ├── final
│   │   ├── IntermediateDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── IntermediateDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Adapter_Diagram.png
│   │   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Facade_Diagram.png
│   │   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Factory_Diagram.png
│   │   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Iterator_Diagram.png
│   │   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── MulticastDelegate.swift
│   │   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVVM_Diagram.png
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Prototype_Diagram.png
│   │   │   │   └── State.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── State_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── MirrorPad
│   │   ├── MirrorPad
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Protocols
│   │   │   │   └── Copying.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── expand_arrows.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── expand_arrows.pdf
│   │   │   │   │   └── launch_background.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── launch_background@2x.png
│   │   │   │   │   ├── launch_background@3x.png
│   │   │   │   │   └── launch_background.png
│   │   │   │   └── Info.plist
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   └── DrawView
│   │   │   ├── DrawView.swift
│   │   │   ├── LineShape.swift
│   │   │   └── States
│   │   │   ├── AcceptInputState.swift
│   │   │   ├── AnimateState.swift
│   │   │   ├── ClearState.swift
│   │   │   ├── CopyState.swift
│   │   │   └── DrawViewState.swift
│   │   └── MirrorPad.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── IntermediateDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── IntermediateDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Adapter_Diagram.png
│   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Facade_Diagram.png
│   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Factory_Diagram.png
│   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Iterator_Diagram.png
│   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVVM_Diagram.png
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Prototype_Diagram.png
│   │   │   └── State.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── State_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── MirrorPad
│   ├── MirrorPad
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   └── ViewController.swift
│   │   ├── Protocols
│   │   │   └── Copying.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── expand_arrows.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── expand_arrows.pdf
│   │   │   │   └── launch_background.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   ├── launch_background@2x.png
│   │   │   │   ├── launch_background@3x.png
│   │   │   │   └── launch_background.png
│   │   │   └── Info.plist
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── DrawView.swift
│   │   └── LineShape.swift
│   └── MirrorPad.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 16-multicast-delegate-pattern
│   ├── final
│   │   ├── IntermediateDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── IntermediateDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Adapter_Diagram.png
│   │   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Facade_Diagram.png
│   │   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Factory_Diagram.png
│   │   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Iterator_Diagram.png
│   │   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── MulticastDelegate.swift
│   │   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVVM_Diagram.png
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Prototype_Diagram.png
│   │   │   │   └── State.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── State_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── MirrorPad
│   │   ├── MirrorPad
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Protocols
│   │   │   │   ├── Copying.swift
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── expand_arrows.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── expand_arrows.pdf
│   │   │   │   │   └── launch_background.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── launch_background@2x.png
│   │   │   │   │   ├── launch_background@3x.png
│   │   │   │   │   └── launch_background.png
│   │   │   │   └── Info.plist
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   └── DrawView
│   │   │   ├── DrawView.swift
│   │   │   ├── LineShape.swift
│   │   │   └── States
│   │   │   ├── AcceptInputState.swift
│   │   │   ├── AnimateState.swift
│   │   │   ├── ClearState.swift
│   │   │   ├── CopyState.swift
│   │   │   └── DrawViewState.swift
│   │   └── MirrorPad.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── IntermediateDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── IntermediateDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Adapter_Diagram.png
│   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Facade_Diagram.png
│   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Factory_Diagram.png
│   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Iterator_Diagram.png
│   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVVM_Diagram.png
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Prototype_Diagram.png
│   │   │   └── State.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── State_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── MirrorPad
│   ├── MirrorPad
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   └── ViewController.swift
│   │   ├── Protocols
│   │   │   └── Copying.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── expand_arrows.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── expand_arrows.pdf
│   │   │   │   └── launch_background.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   ├── launch_background@2x.png
│   │   │   │   ├── launch_background@3x.png
│   │   │   │   └── launch_background.png
│   │   │   └── Info.plist
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   └── DrawView
│   │   ├── DrawView.swift
│   │   ├── LineShape.swift
│   │   └── States
│   │   ├── AcceptInputState.swift
│   │   ├── AnimateState.swift
│   │   ├── ClearState.swift
│   │   ├── CopyState.swift
│   │   └── DrawViewState.swift
│   └── MirrorPad.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 17-facade-pattern
│   ├── final
│   │   ├── IntermediateDesignPatterns.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   ├── IntermediateDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Adapter_Diagram.png
│   │   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Facade_Diagram.png
│   │   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Factory_Diagram.png
│   │   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Iterator_Diagram.png
│   │   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── MulticastDelegate.swift
│   │   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── MVVM_Diagram.png
│   │   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   │   └── Contents.swift
│   │   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Prototype_Diagram.png
│   │   │   │   └── State.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── State_Diagram.png
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── MirrorPad
│   │   ├── MirrorPad
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Facades
│   │   │   │   ├── DrawingSelectionViewController.swift
│   │   │   │   ├── ImageRenderer.swift
│   │   │   │   └── ShareFacade.swift
│   │   │   ├── Protocols
│   │   │   │   ├── Copying.swift
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── expand_arrows.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── expand_arrows.pdf
│   │   │   │   │   └── launch_background.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── launch_background@2x.png
│   │   │   │   │   ├── launch_background@3x.png
│   │   │   │   │   └── launch_background.png
│   │   │   │   └── Info.plist
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   ├── DrawingSelectionViewController.xib
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   └── DrawView
│   │   │   ├── DrawView.swift
│   │   │   ├── LineShape.swift
│   │   │   └── States
│   │   │   ├── AcceptInputState.swift
│   │   │   ├── AnimateState.swift
│   │   │   ├── ClearState.swift
│   │   │   ├── CopyState.swift
│   │   │   └── DrawViewState.swift
│   │   └── MirrorPad.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   ├── resources
│   │   ├── DrawingSelectionViewController.swift
│   │   ├── DrawingSelectionViewController.xib
│   │   └── ImageRenderer.swift
│   └── starter
│   ├── IntermediateDesignPatterns.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── IntermediateDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── Adapter.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Adapter_Diagram.png
│   │   │   ├── Facade.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Facade_Diagram.png
│   │   │   ├── Factory.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Factory_Diagram.png
│   │   │   ├── Iterator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Iterator_Diagram.png
│   │   │   ├── MulticastDelegate.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── MulticastDelegate_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── MulticastDelegate.swift
│   │   │   ├── MVVM.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── MVVM_Diagram.png
│   │   │   ├── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── Prototype.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Prototype_Diagram.png
│   │   │   └── State.xcplaygroundpage
│   │   │   ├── Contents.swift
│   │   │   └── Resources
│   │   │   └── State_Diagram.png
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── MirrorPad
│   ├── MirrorPad
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   └── ViewController.swift
│   │   ├── Protocols
│   │   │   ├── Copying.swift
│   │   │   └── MulticastDelegate.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── expand_arrows.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── expand_arrows.pdf
│   │   │   │   └── launch_background.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   ├── launch_background@2x.png
│   │   │   │   ├── launch_background@3x.png
│   │   │   │   └── launch_background.png
│   │   │   └── Info.plist
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   └── DrawView
│   │   ├── DrawView.swift
│   │   ├── LineShape.swift
│   │   └── States
│   │   ├── AcceptInputState.swift
│   │   ├── AnimateState.swift
│   │   ├── ClearState.swift
│   │   ├── CopyState.swift
│   │   └── DrawViewState.swift
│   └── MirrorPad.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 18-flyweight-pattern
│   ├── final
│   │   ├── AdvancedDesignPatterns.xcworkspace
│   │   │   ├── AdvancedDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   │   ├── Command.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Command_Diagram.png
│   │   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Composite_Diagram.png
│   │   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Flyweight_Diagram.png
│   │   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Mediator.swift
│   │   │   │   └── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── YetiJokes
│   │   ├── YetiJokes
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── JokeProvider.swift
│   │   │   │   └── Joke.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── background.imageset
│   │   │   │   │   │   ├── background.png
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── cool_yeti.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── cool_yeti@2x.png
│   │   │   │   │   ├── cool_yeti@3x.png
│   │   │   │   │   └── cool_yeti.png
│   │   │   │   ├── Info.plist
│   │   │   │   └── jokes.json
│   │   │   └── Views
│   │   │   └── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── YetiJokes.xcodeproj
│   │   │   ├── project.pbxproj
│   │   │   └── project.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── YetiTheme
│   │   ├── YetiTheme
│   │   │   ├── coolstory-regular.ttf
│   │   │   ├── Fonts.swift
│   │   │   ├── Info.plist
│   │   │   └── YetiTheme.h
│   │   └── YetiTheme.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   └── contents.xcworkspacedata
│   └── starter
│   ├── AdvancedDesignPatterns.xcworkspace
│   │   ├── AdvancedDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   ├── Command.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Command_Diagram.png
│   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Composite_Diagram.png
│   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Flyweight_Diagram.png
│   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Mediator.swift
│   │   │   └── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── YetiJokes
│   ├── YetiJokes
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   └── ViewController.swift
│   │   ├── Models
│   │   │   ├── JokeProvider.swift
│   │   │   └── Joke.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── background.imageset
│   │   │   │   │   ├── background.png
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   └── cool_yeti.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   ├── cool_yeti@2x.png
│   │   │   │   ├── cool_yeti@3x.png
│   │   │   │   └── cool_yeti.png
│   │   │   ├── Info.plist
│   │   │   └── jokes.json
│   │   └── Views
│   │   └── Base.lproj
│   │   ├── LaunchScreen.storyboard
│   │   └── Main.storyboard
│   ├── YetiJokes.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── YetiTheme
│   ├── YetiTheme
│   │   ├── coolstory-regular.ttf
│   │   ├── Fonts.swift
│   │   ├── Info.plist
│   │   └── YetiTheme.h
│   └── YetiTheme.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 19-mediator-pattern
│   ├── final
│   │   ├── AdvancedDesignPatterns.xcworkspace
│   │   │   ├── AdvancedDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   │   ├── Command.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Command_Diagram.png
│   │   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Composite_Diagram.png
│   │   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Flyweight_Diagram.png
│   │   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Mediator.swift
│   │   │   │   └── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── YetiDate
│   │   ├── Podfile
│   │   ├── Podfile.lock
│   │   ├── Pods
│   │   │   ├── Manifest.lock
│   │   │   ├── Pods.xcodeproj
│   │   │   │   └── project.pbxproj
│   │   │   ├── Target Support Files
│   │   │   │   ├── Pods-YetiDate
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   ├── Pods-YetiDate-acknowledgements.markdown
│   │   │   │   │   ├── Pods-YetiDate-acknowledgements.plist
│   │   │   │   │   ├── Pods-YetiDate.debug.xcconfig
│   │   │   │   │   ├── Pods-YetiDate-dummy.m
│   │   │   │   │   ├── Pods-YetiDate-frameworks.sh
│   │   │   │   │   ├── Pods-YetiDate.modulemap
│   │   │   │   │   ├── Pods-YetiDate.release.xcconfig
│   │   │   │   │   ├── Pods-YetiDate-resources.sh
│   │   │   │   │   └── Pods-YetiDate-umbrella.h
│   │   │   │   └── YelpAPI
│   │   │   │   ├── Info.plist
│   │   │   │   ├── YelpAPI-dummy.m
│   │   │   │   ├── YelpAPI.modulemap
│   │   │   │   ├── YelpAPI-prefix.pch
│   │   │   │   ├── YelpAPI-umbrella.h
│   │   │   │   └── YelpAPI.xcconfig
│   │   │   └── YelpAPI
│   │   │   ├── Classes
│   │   │   │   ├── Client
│   │   │   │   │   ├── YLPClient+Business.h
│   │   │   │   │   ├── YLPClient+Business.m
│   │   │   │   │   ├── YLPClient.h
│   │   │   │   │   ├── YLPClient.m
│   │   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   │   ├── YLPClient+Search.h
│   │   │   │   │   └── YLPClient+Search.m
│   │   │   │   ├── Common
│   │   │   │   │   ├── YLPCoordinate.h
│   │   │   │   │   └── YLPCoordinate.m
│   │   │   │   ├── Request
│   │   │   │   │   ├── YLPQuery.h
│   │   │   │   │   ├── YLPQuery.m
│   │   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   │   └── YLPSortType.h
│   │   │   │   ├── Response
│   │   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   │   ├── YLPBusiness.h
│   │   │   │   │   ├── YLPBusiness.m
│   │   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   │   ├── YLPCategory.h
│   │   │   │   │   ├── YLPCategory.m
│   │   │   │   │   ├── YLPLocation.h
│   │   │   │   │   ├── YLPLocation.m
│   │   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   │   ├── YLPReview.h
│   │   │   │   │   ├── YLPReview.m
│   │   │   │   │   ├── YLPSearch.h
│   │   │   │   │   ├── YLPSearch.m
│   │   │   │   │   ├── YLPUser.h
│   │   │   │   │   └── YLPUser.m
│   │   │   │   └── YelpAPI.h
│   │   │   ├── LICENSE
│   │   │   └── README.md
│   │   ├── YetiDate
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   ├── PlanDateViewController.swift
│   │   │   │   └── ReviewDateDetailsViewController.swift
│   │   │   ├── Extensions
│   │   │   │   ├── CLLocationCoordinate2D+Hashable.swift
│   │   │   │   └── YLPCoordinate+CLLocationCoordinate2D.swift
│   │   │   ├── Resources
│   │   │   │   ├── APIKeys.swift
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── background_yeti_date.imageset
│   │   │   │   │   │   ├── background_yeti_date@2x.png
│   │   │   │   │   │   ├── background_yeti_date@3x.png
│   │   │   │   │   │   ├── background_yeti_date.png
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_bar.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── ic_bar@2x.png
│   │   │   │   │   │   ├── ic_bar@3x.png
│   │   │   │   │   │   └── ic_bar.png
│   │   │   │   │   ├── ic_bar_large.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── ic_bar_large@2x.png
│   │   │   │   │   │   ├── ic_bar_large@3x.png
│   │   │   │   │   │   └── ic_bar_large.png
│   │   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   │   ├── ic_food.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── ic_food@2x.png
│   │   │   │   │   │   ├── ic_food@3x.png
│   │   │   │   │   │   └── ic_food.png
│   │   │   │   │   ├── ic_food_large.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── ic_food_large@2x.png
│   │   │   │   │   │   ├── ic_food_large@3x.png
│   │   │   │   │   │   └── ic_food_large.png
│   │   │   │   │   ├── ic_movie.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── ic_movie@2x.png
│   │   │   │   │   │   ├── ic_movie@3x.png
│   │   │   │   │   │   └── ic_movie.png
│   │   │   │   │   └── ic_movie_large.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_movie_large@2x.png
│   │   │   │   │   ├── ic_movie_large@3x.png
│   │   │   │   │   └── ic_movie_large.png
│   │   │   │   └── Info.plist
│   │   │   ├── SearchClient
│   │   │   │   ├── Mediator.swift
│   │   │   │   ├── Protocols
│   │   │   │   │   ├── SearchClientDelegate.swift
│   │   │   │   │   ├── SearchColleagueMediating.swift
│   │   │   │   │   └── SearchColleague.swift
│   │   │   │   ├── SearchClient.swift
│   │   │   │   └── YelpSearchColleague.swift
│   │   │   ├── Utils
│   │   │   │   └── ContestedAnnotationTool.swift
│   │   │   ├── ViewModels
│   │   │   │   ├── BusinessMapViewModel.swift
│   │   │   │   ├── BusinessTableViewModel.swift
│   │   │   │   └── YelpCategory.swift
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   └── BusinessTableViewCell.swift
│   │   ├── YetiDate.xcodeproj
│   │   │   ├── project.pbxproj
│   │   │   ├── project.xcworkspace
│   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   └── xcshareddata
│   │   │   │   └── IDEWorkspaceChecks.plist
│   │   │   └── xcshareddata
│   │   │   └── xcschemes
│   │   │   └── YetiDate.xcscheme
│   │   └── YetiDate.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   ├── IDEWorkspaceChecks.plist
│   │   └── WorkspaceSettings.xcsettings
│   └── starter
│   ├── AdvancedDesignPatterns.xcworkspace
│   │   ├── AdvancedDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   ├── Command.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Command_Diagram.png
│   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Composite_Diagram.png
│   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Flyweight_Diagram.png
│   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Mediator.swift
│   │   │   └── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── YetiDate
│   ├── Podfile
│   ├── Podfile.lock
│   ├── Pods
│   │   ├── Manifest.lock
│   │   ├── Pods.xcodeproj
│   │   │   └── project.pbxproj
│   │   ├── Target Support Files
│   │   │   ├── Pods-YetiDate
│   │   │   │   ├── Info.plist
│   │   │   │   ├── Pods-YetiDate-acknowledgements.markdown
│   │   │   │   ├── Pods-YetiDate-acknowledgements.plist
│   │   │   │   ├── Pods-YetiDate.debug.xcconfig
│   │   │   │   ├── Pods-YetiDate-dummy.m
│   │   │   │   ├── Pods-YetiDate-frameworks.sh
│   │   │   │   ├── Pods-YetiDate.modulemap
│   │   │   │   ├── Pods-YetiDate.release.xcconfig
│   │   │   │   ├── Pods-YetiDate-resources.sh
│   │   │   │   └── Pods-YetiDate-umbrella.h
│   │   │   └── YelpAPI
│   │   │   ├── Info.plist
│   │   │   ├── YelpAPI-dummy.m
│   │   │   ├── YelpAPI.modulemap
│   │   │   ├── YelpAPI-prefix.pch
│   │   │   ├── YelpAPI-umbrella.h
│   │   │   └── YelpAPI.xcconfig
│   │   └── YelpAPI
│   │   ├── Classes
│   │   │   ├── Client
│   │   │   │   ├── YLPClient+Business.h
│   │   │   │   ├── YLPClient+Business.m
│   │   │   │   ├── YLPClient.h
│   │   │   │   ├── YLPClient.m
│   │   │   │   ├── YLPClient+PhoneSearch.h
│   │   │   │   ├── YLPClient+PhoneSearch.m
│   │   │   │   ├── YLPClientPrivate.h
│   │   │   │   ├── YLPClient+Reviews.h
│   │   │   │   ├── YLPClient+Reviews.m
│   │   │   │   ├── YLPClient+Search.h
│   │   │   │   └── YLPClient+Search.m
│   │   │   ├── Common
│   │   │   │   ├── YLPCoordinate.h
│   │   │   │   └── YLPCoordinate.m
│   │   │   ├── Request
│   │   │   │   ├── YLPQuery.h
│   │   │   │   ├── YLPQuery.m
│   │   │   │   ├── YLPQueryPrivate.h
│   │   │   │   └── YLPSortType.h
│   │   │   ├── Response
│   │   │   │   ├── NSDictionary+YLPUtils.m
│   │   │   │   ├── YLPBusiness.h
│   │   │   │   ├── YLPBusiness.m
│   │   │   │   ├── YLPBusinessReviews.h
│   │   │   │   ├── YLPBusinessReviews.m
│   │   │   │   ├── YLPCategory.h
│   │   │   │   ├── YLPCategory.m
│   │   │   │   ├── YLPLocation.h
│   │   │   │   ├── YLPLocation.m
│   │   │   │   ├── YLPResponsePrivate.h
│   │   │   │   ├── YLPReview.h
│   │   │   │   ├── YLPReview.m
│   │   │   │   ├── YLPSearch.h
│   │   │   │   ├── YLPSearch.m
│   │   │   │   ├── YLPUser.h
│   │   │   │   └── YLPUser.m
│   │   │   └── YelpAPI.h
│   │   ├── LICENSE
│   │   └── README.md
│   ├── YetiDate
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   ├── PlanDateViewController.swift
│   │   │   └── ReviewDateDetailsViewController.swift
│   │   ├── Extensions
│   │   │   ├── CLLocationCoordinate2D+Hashable.swift
│   │   │   └── YLPCoordinate+CLLocationCoordinate2D.swift
│   │   ├── Resources
│   │   │   ├── APIKeys.swift
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── background_yeti_date.imageset
│   │   │   │   │   ├── background_yeti_date@2x.png
│   │   │   │   │   ├── background_yeti_date@3x.png
│   │   │   │   │   ├── background_yeti_date.png
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── ic_bar.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_bar@2x.png
│   │   │   │   │   ├── ic_bar@3x.png
│   │   │   │   │   └── ic_bar.png
│   │   │   │   ├── ic_bar_large.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_bar_large@2x.png
│   │   │   │   │   ├── ic_bar_large@3x.png
│   │   │   │   │   └── ic_bar_large.png
│   │   │   │   ├── ic_circle_check.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_circle_check.pdf
│   │   │   │   ├── ic_food.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_food@2x.png
│   │   │   │   │   ├── ic_food@3x.png
│   │   │   │   │   └── ic_food.png
│   │   │   │   ├── ic_food_large.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_food_large@2x.png
│   │   │   │   │   ├── ic_food_large@3x.png
│   │   │   │   │   └── ic_food_large.png
│   │   │   │   ├── ic_movie.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_movie@2x.png
│   │   │   │   │   ├── ic_movie@3x.png
│   │   │   │   │   └── ic_movie.png
│   │   │   │   └── ic_movie_large.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   ├── ic_movie_large@2x.png
│   │   │   │   ├── ic_movie_large@3x.png
│   │   │   │   └── ic_movie_large.png
│   │   │   └── Info.plist
│   │   ├── SearchClient
│   │   │   ├── Mediator.swift
│   │   │   ├── Protocols
│   │   │   │   ├── SearchClientDelegate.swift
│   │   │   │   ├── SearchColleagueMediating.swift
│   │   │   │   └── SearchColleague.swift
│   │   │   ├── SearchClient.swift
│   │   │   └── YelpSearchColleague.swift
│   │   ├── Utils
│   │   │   └── ContestedAnnotationTool.swift
│   │   ├── ViewModels
│   │   │   ├── BusinessMapViewModel.swift
│   │   │   ├── BusinessTableViewModel.swift
│   │   │   └── YelpCategory.swift
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   └── BusinessTableViewCell.swift
│   ├── YetiDate.xcodeproj
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── xcshareddata
│   │   └── xcschemes
│   │   └── YetiDate.xcscheme
│   └── YetiDate.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   ├── IDEWorkspaceChecks.plist
│   └── WorkspaceSettings.xcsettings
├── 20-composite-pattern
│   ├── final
│   │   ├── AdvancedDesignPatterns.xcworkspace
│   │   │   ├── AdvancedDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   │   ├── Command.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Command_Diagram.png
│   │   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Composite_Diagram.png
│   │   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Flyweight_Diagram.png
│   │   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Mediator.swift
│   │   │   │   └── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── DefeatYourToDoList
│   │   ├── DefeatYourToDoList
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   └── ViewController.swift
│   │   │   ├── Models
│   │   │   │   └── Models.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── door.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── door.png
│   │   │   │   │   ├── helmet.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── object-tool-helmet.png
│   │   │   │   │   ├── NinjaCat.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── NinjaCat_icon1_1024.png
│   │   │   │   │   └── treasure.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── object-treasure.png
│   │   │   │   └── Info.plist
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   ├── ToDoCell.swift
│   │   │   └── ToDoCell.xib
│   │   └── DefeatYourToDoList.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── AdvancedDesignPatterns.xcworkspace
│   │   ├── AdvancedDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   ├── Command.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Command_Diagram.png
│   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Composite_Diagram.png
│   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Flyweight_Diagram.png
│   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Mediator.swift
│   │   │   └── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── DefeatYourToDoList
│   ├── DefeatYourToDoList
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   └── ViewController.swift
│   │   ├── Models
│   │   │   └── Models.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── door.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── door.png
│   │   │   │   ├── helmet.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── object-tool-helmet.png
│   │   │   │   ├── NinjaCat.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── NinjaCat_icon1_1024.png
│   │   │   │   └── treasure.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── object-treasure.png
│   │   │   └── Info.plist
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── ToDoCell.swift
│   │   └── ToDoCell.xib
│   └── DefeatYourToDoList.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 21-command-pattern
│   ├── final
│   │   ├── AdvancedDesignPatterns.xcworkspace
│   │   │   ├── AdvancedDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   │   ├── Command.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Command_Diagram.png
│   │   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Composite_Diagram.png
│   │   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Flyweight_Diagram.png
│   │   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Mediator.swift
│   │   │   │   └── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RayWenToe
│   │   ├── RayWenToe
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   ├── GameManager
│   │   │   │   │   ├── GameManager.swift
│   │   │   │   │   ├── GameplayStrategy.temp_caseinsensitive_rename.swift
│   │   │   │   │   ├── MoveCommand.swift
│   │   │   │   │   ├── Referee.swift
│   │   │   │   │   └── States
│   │   │   │   │   ├── ComputerInputState.swift
│   │   │   │   │   ├── GameState.swift
│   │   │   │   │   ├── PlayerInputState.swift
│   │   │   │   │   └── PlayGameState.swift
│   │   │   │   ├── GameplayViewController.swift
│   │   │   │   └── SettingsViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── GameboardPosition.swift
│   │   │   │   ├── GameboardSize.swift
│   │   │   │   ├── Gameboard.swift
│   │   │   │   └── Player.swift
│   │   │   ├── Protocols
│   │   │   │   └── Copying.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   └── ic_settings.pdf
│   │   │   │   │   └── launch_background.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── launch_background.pdf
│   │   │   │   └── Info.plist
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   ├── GameboardView.swift
│   │   │   ├── GameplayView.swift
│   │   │   └── MarkViews
│   │   │   ├── MarkView.swift
│   │   │   ├── OView.swift
│   │   │   └── XView.swift
│   │   ├── RayWenToeTests
│   │   │   ├── Info.plist
│   │   │   └── RefereeTests.swift
│   │   └── RayWenToe.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── AdvancedDesignPatterns.xcworkspace
│   │   ├── AdvancedDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   ├── Command.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Command_Diagram.png
│   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Composite_Diagram.png
│   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Flyweight_Diagram.png
│   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Mediator.swift
│   │   │   └── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── RayWenToe
│   ├── RayWenToe
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   ├── GameManager
│   │   │   │   ├── GameManager.swift
│   │   │   │   ├── GameplayStrategy.temp_caseinsensitive_rename.swift
│   │   │   │   ├── Referee.swift
│   │   │   │   └── States
│   │   │   │   ├── ComputerInputState.swift
│   │   │   │   ├── GameState.swift
│   │   │   │   ├── PlayerInputState.swift
│   │   │   │   └── PlayGameState.swift
│   │   │   ├── GameplayViewController.swift
│   │   │   └── SettingsViewController.swift
│   │   ├── Models
│   │   │   ├── GameboardPosition.swift
│   │   │   ├── GameboardSize.swift
│   │   │   ├── Gameboard.swift
│   │   │   └── Player.swift
│   │   ├── Protocols
│   │   │   └── Copying.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   ├── ic_settings.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── ic_settings.pdf
│   │   │   │   └── launch_background.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── launch_background.pdf
│   │   │   └── Info.plist
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── GameboardView.swift
│   │   ├── GameplayView.swift
│   │   └── MarkViews
│   │   ├── MarkView.swift
│   │   ├── OView.swift
│   │   └── XView.swift
│   ├── RayWenToeTests
│   │   ├── Info.plist
│   │   └── RefereeTests.swift
│   └── RayWenToe.xcodeproj
│   ├── project.pbxproj
│   └── project.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── 22-chain-of-responsibility
│   ├── final
│   │   ├── AdvancedDesignPatterns.xcworkspace
│   │   │   ├── AdvancedDesignPatterns.playground
│   │   │   │   ├── contents.xcplayground
│   │   │   │   └── Pages
│   │   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   │   ├── Command.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Command_Diagram.png
│   │   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Composite_Diagram.png
│   │   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   └── Resources
│   │   │   │   │   └── Flyweight_Diagram.png
│   │   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   │   ├── Contents.swift
│   │   │   │   │   ├── Resources
│   │   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   │   └── Sources
│   │   │   │   │   └── Mediator.swift
│   │   │   │   └── Overview.xcplaygroundpage
│   │   │   │   └── Contents.swift
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RWSecret
│   │   ├── Podfile
│   │   ├── Podfile.lock
│   │   ├── Pods
│   │   │   ├── Manifest.lock
│   │   │   ├── Pods.xcodeproj
│   │   │   │   └── project.pbxproj
│   │   │   ├── RNCryptor
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   └── Sources
│   │   │   │   ├── Cryptor
│   │   │   │   │   └── include
│   │   │   │   │   └── RNCryptor.h
│   │   │   │   └── RNCryptor
│   │   │   │   └── RNCryptor.swift
│   │   │   ├── SwiftKeychainWrapper
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   └── SwiftKeychainWrapper
│   │   │   │   ├── KeychainItemAccessibility.swift
│   │   │   │   ├── KeychainWrapper.swift
│   │   │   │   └── SwiftKeychainWrapper.h
│   │   │   └── Target Support Files
│   │   │   ├── Pods-RWSecret
│   │   │   │   ├── Info.plist
│   │   │   │   ├── Pods-RWSecret-acknowledgements.markdown
│   │   │   │   ├── Pods-RWSecret-acknowledgements.plist
│   │   │   │   ├── Pods-RWSecret.debug.xcconfig
│   │   │   │   ├── Pods-RWSecret-dummy.m
│   │   │   │   ├── Pods-RWSecret-frameworks.sh
│   │   │   │   ├── Pods-RWSecret.modulemap
│   │   │   │   ├── Pods-RWSecret.release.xcconfig
│   │   │   │   ├── Pods-RWSecret-resources.sh
│   │   │   │   └── Pods-RWSecret-umbrella.h
│   │   │   ├── Pods-RWSecret-RWSecretTests
│   │   │   │   ├── Info.plist
│   │   │   │   ├── Pods-RWSecret-RWSecretTests-acknowledgements.markdown
│   │   │   │   ├── Pods-RWSecret-RWSecretTests-acknowledgements.plist
│   │   │   │   ├── Pods-RWSecret-RWSecretTests.debug.xcconfig
│   │   │   │   ├── Pods-RWSecret-RWSecretTests-dummy.m
│   │   │   │   ├── Pods-RWSecret-RWSecretTests-frameworks.sh
│   │   │   │   ├── Pods-RWSecret-RWSecretTests.modulemap
│   │   │   │   ├── Pods-RWSecret-RWSecretTests.release.xcconfig
│   │   │   │   ├── Pods-RWSecret-RWSecretTests-resources.sh
│   │   │   │   └── Pods-RWSecret-RWSecretTests-umbrella.h
│   │   │   ├── RNCryptor
│   │   │   │   ├── Info.plist
│   │   │   │   ├── RNCryptor-dummy.m
│   │   │   │   ├── RNCryptor.modulemap
│   │   │   │   ├── RNCryptor-prefix.pch
│   │   │   │   ├── RNCryptor-umbrella.h
│   │   │   │   └── RNCryptor.xcconfig
│   │   │   └── SwiftKeychainWrapper
│   │   │   ├── Info.plist
│   │   │   ├── SwiftKeychainWrapper-dummy.m
│   │   │   ├── SwiftKeychainWrapper.modulemap
│   │   │   ├── SwiftKeychainWrapper-prefix.pch
│   │   │   ├── SwiftKeychainWrapper-umbrella.h
│   │   │   └── SwiftKeychainWrapper.xcconfig
│   │   ├── RWSecret
│   │   │   ├── AppDelegate
│   │   │   │   └── AppDelegate.swift
│   │   │   ├── Controllers
│   │   │   │   ├── DecryptViewController.swift
│   │   │   │   └── PasswordViewController.swift
│   │   │   ├── Models
│   │   │   │   ├── SecretMessageCareTaker.swift
│   │   │   │   └── SecretMessage.swift
│   │   │   ├── PasswordClient
│   │   │   │   ├── DecryptionHandlerProtocol.swift
│   │   │   │   ├── DecryptionHandler.swift
│   │   │   │   ├── EncryptHandlerProtocol.swift
│   │   │   │   └── PasswordClient.swift
│   │   │   ├── Resources
│   │   │   │   ├── Assets.xcassets
│   │   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   │   ├── Contents.json
│   │   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── launch_background.imageset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── launch_background.pdf
│   │   │   │   ├── Info.plist
│   │   │   │   └── SecretMessages.json
│   │   │   └── Views
│   │   │   ├── Base.lproj
│   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   └── Main.storyboard
│   │   │   └── SecretMessageCell.swift
│   │   ├── RWSecretTests
│   │   │   ├── Cases
│   │   │   │   └── PasswordManagerTests.swift
│   │   │   └── Supporting Files
│   │   │   └── Info.plist
│   │   ├── RWSecret.xcodeproj
│   │   │   ├── project.pbxproj
│   │   │   └── project.xcworkspace
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata
│   │   │   └── IDEWorkspaceChecks.plist
│   │   └── RWSecret.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── starter
│   ├── AdvancedDesignPatterns.xcworkspace
│   │   ├── AdvancedDesignPatterns.playground
│   │   │   ├── contents.xcplayground
│   │   │   └── Pages
│   │   │   ├── ChainOfResponsibility.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── ChainOfResponsibility_Diagram.png
│   │   │   ├── Command.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Command_Diagram.png
│   │   │   ├── Composite.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Composite_Diagram.png
│   │   │   ├── Flyweight.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   └── Resources
│   │   │   │   └── Flyweight_Diagram.png
│   │   │   ├── Mediator.xcplaygroundpage
│   │   │   │   ├── Contents.swift
│   │   │   │   ├── Resources
│   │   │   │   │   └── Mediator_Diagram.png
│   │   │   │   └── Sources
│   │   │   │   └── Mediator.swift
│   │   │   └── Overview.xcplaygroundpage
│   │   │   └── Contents.swift
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── RWSecret
│   ├── Podfile
│   ├── Podfile.lock
│   ├── Pods
│   │   ├── Manifest.lock
│   │   ├── Pods.xcodeproj
│   │   │   └── project.pbxproj
│   │   ├── RNCryptor
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   └── Sources
│   │   │   ├── Cryptor
│   │   │   │   └── include
│   │   │   │   └── RNCryptor.h
│   │   │   └── RNCryptor
│   │   │   └── RNCryptor.swift
│   │   ├── SwiftKeychainWrapper
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   └── SwiftKeychainWrapper
│   │   │   ├── KeychainItemAccessibility.swift
│   │   │   ├── KeychainWrapper.swift
│   │   │   └── SwiftKeychainWrapper.h
│   │   └── Target Support Files
│   │   ├── Pods-RWSecret
│   │   │   ├── Info.plist
│   │   │   ├── Pods-RWSecret-acknowledgements.markdown
│   │   │   ├── Pods-RWSecret-acknowledgements.plist
│   │   │   ├── Pods-RWSecret.debug.xcconfig
│   │   │   ├── Pods-RWSecret-dummy.m
│   │   │   ├── Pods-RWSecret-frameworks.sh
│   │   │   ├── Pods-RWSecret.modulemap
│   │   │   ├── Pods-RWSecret.release.xcconfig
│   │   │   ├── Pods-RWSecret-resources.sh
│   │   │   └── Pods-RWSecret-umbrella.h
│   │   ├── Pods-RWSecret-RWSecretTests
│   │   │   ├── Info.plist
│   │   │   ├── Pods-RWSecret-RWSecretTests-acknowledgements.markdown
│   │   │   ├── Pods-RWSecret-RWSecretTests-acknowledgements.plist
│   │   │   ├── Pods-RWSecret-RWSecretTests.debug.xcconfig
│   │   │   ├── Pods-RWSecret-RWSecretTests-dummy.m
│   │   │   ├── Pods-RWSecret-RWSecretTests-frameworks.sh
│   │   │   ├── Pods-RWSecret-RWSecretTests.modulemap
│   │   │   ├── Pods-RWSecret-RWSecretTests.release.xcconfig
│   │   │   ├── Pods-RWSecret-RWSecretTests-resources.sh
│   │   │   └── Pods-RWSecret-RWSecretTests-umbrella.h
│   │   ├── RNCryptor
│   │   │   ├── Info.plist
│   │   │   ├── RNCryptor-dummy.m
│   │   │   ├── RNCryptor.modulemap
│   │   │   ├── RNCryptor-prefix.pch
│   │   │   ├── RNCryptor-umbrella.h
│   │   │   └── RNCryptor.xcconfig
│   │   └── SwiftKeychainWrapper
│   │   ├── Info.plist
│   │   ├── SwiftKeychainWrapper-dummy.m
│   │   ├── SwiftKeychainWrapper.modulemap
│   │   ├── SwiftKeychainWrapper-prefix.pch
│   │   ├── SwiftKeychainWrapper-umbrella.h
│   │   └── SwiftKeychainWrapper.xcconfig
│   ├── RWSecret
│   │   ├── AppDelegate
│   │   │   └── AppDelegate.swift
│   │   ├── Controllers
│   │   │   ├── DecryptViewController.swift
│   │   │   └── PasswordViewController.swift
│   │   ├── Models
│   │   │   ├── SecretMessageCareTaker.swift
│   │   │   └── SecretMessage.swift
│   │   ├── PasswordClient
│   │   │   ├── EncryptHandlerProtocol.swift
│   │   │   └── PasswordClient.swift
│   │   ├── Resources
│   │   │   ├── Assets.xcassets
│   │   │   │   ├── AppIcon.appiconset
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   ├── Icon-App-20x20@1x.png
│   │   │   │   │   ├── Icon-App-20x20@2x.png
│   │   │   │   │   ├── Icon-App-20x20@3x.png
│   │   │   │   │   ├── Icon-App-29x29@1x.png
│   │   │   │   │   ├── Icon-App-29x29@2x.png
│   │   │   │   │   ├── Icon-App-29x29@3x.png
│   │   │   │   │   ├── Icon-App-40x40@1x.png
│   │   │   │   │   ├── Icon-App-40x40@2x.png
│   │   │   │   │   ├── Icon-App-40x40@3x.png
│   │   │   │   │   ├── Icon-App-57x57@1x.png
│   │   │   │   │   ├── Icon-App-57x57@2x.png
│   │   │   │   │   ├── Icon-App-60x60@2x.png
│   │   │   │   │   ├── Icon-App-60x60@3x.png
│   │   │   │   │   ├── Icon-App-72x72@1x.png
│   │   │   │   │   ├── Icon-App-72x72@2x.png
│   │   │   │   │   ├── Icon-App-76x76@1x.png
│   │   │   │   │   ├── Icon-App-76x76@2x.png
│   │   │   │   │   ├── Icon-App-83.5x83.5@2x.png
│   │   │   │   │   ├── Icon-Small-50x50@1x.png
│   │   │   │   │   ├── Icon-Small-50x50@2x.png
│   │   │   │   │   └── ItunesArtwork@2x.png
│   │   │   │   ├── Contents.json
│   │   │   │   └── launch_background.imageset
│   │   │   │   ├── Contents.json
│   │   │   │   └── launch_background.pdf
│   │   │   ├── Info.plist
│   │   │   └── SecretMessages.json
│   │   └── Views
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   └── SecretMessageCell.swift
│   ├── RWSecretTests
│   │   ├── Cases
│   │   │   └── PasswordManagerTests.swift
│   │   └── Supporting Files
│   │   └── Info.plist
│   ├── RWSecret.xcodeproj
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   │   └── IDEWorkspaceChecks.plist
│   └── RWSecret.xcworkspace
│   ├── contents.xcworkspacedata
│   └── xcshareddata
│   └── IDEWorkspaceChecks.plist
├── Design_Patterns_by_Tutorials_v1.0.epub
└── Design_Patterns_by_Tutorials_v1.0.pdf

1818 directories, 3597 files

标签:

实例下载地址

Desgin Patterns by Tutorials v1.0 (Swift 4 & Xcode 9)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警