├── .gitignore
├── Assets
├── PJ-02-00.png
├── PJ-02-01.png
├── PJ-02-02.png
├── PJ-02-03.png
├── PJ-02-04.png
├── PJ-02-05.png
├── PJ-02-06.png
├── PJ-03-00.png
├── PJ-03-01.png
├── PJ-03-02.png
├── PJ-03-03.png
├── PJ-04-01.png
├── PJ-04-02-01.png
├── PJ-04-02-02.png
├── PJ-04-02-03.png
├── PJ-04-02-04.gif
├── PJ-04-02.png
├── PJ-04-03-01.png
├── PJ-04-03-02.gif
├── PJ-04-03-03.png
├── PJ-04-03-04.gif
├── PJ-04-03.png
├── PJ-04-04.png
├── PJ-04-05.png
├── PJ-04-06.png
├── PJ-04-07.png
├── PJ-04-08.png
├── PJ-04-09.gif
├── PJ-04-10.png
├── PJ-04-11.gif
├── PJ-05-01.png
├── PJ-06-01.png
├── PJ-08-01.png
├── PJ-08-02.png
├── PJ-10-01.png
├── PJ-10-02-01.png
├── PJ-10-02-02.png
├── PJ-10-02-03.gif
├── PJ-10-02.png
├── PJ-10-03-01.png
├── PJ-10-03-02.png
├── PJ-10-03-03.png
├── PJ-10-03-04.png
├── PJ-10-03-05.gif
├── PJ-10-03-06.png
├── PJ-10-03-07.gif
├── PJ-10-03-08.gif
├── PJ-10-03.png
├── PJ-10-04.png
├── PJ-10-05.png
├── PJ-10-06.png
├── PJ-10-07.png
├── PJ-10-08.png
├── PJ-10-09.png
├── PJ-10-10.png
├── PJ-10-11.png
├── PJ-11-01.png
├── PJ-11-02.png
├── PJ-11-03.png
├── PJ-11-04.png
└── PJ-11-05.gif
├── PJ-02-Dispatcher.md
├── PJ-03-Outlet-Catalog.md
├── PJ-04-Navigation.md
├── PJ-05-Alerts.md
├── PJ-06-CocoaPods.md
├── PJ-07-SimpleAPIClient.md
├── PJ-08-LoginForm.md
├── PJ-09-UserDefaults.md
├── PJ-10-Pokedex-P1.md
├── PJ-10-Pokedex-P2.md
├── PJ-10-Pokedex-P3.md
├── PJ-11-Databases.md
├── Playgrounds
├── P01-01-MapFilterReduce.playground
│ ├── Contents.swift
│ └── contents.xcplayground
├── P01-SwiftBasics.playground
│ ├── Contents.swift
│ └── contents.xcplayground
├── P02-Delegation.playground
│ ├── Contents.swift
│ └── contents.xcplayground
└── P03-Tables-and-Collections.playground
│ ├── Contents.swift
│ └── contents.xcplayground
├── Projects
├── Alerts
│ ├── Alerts.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── Alerts
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── CocoaPods
│ ├── CocoaPods.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── CocoaPods.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── CocoaPods
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── Podfile
│ ├── Podfile.lock
│ └── Pods
│ │ ├── Bugle
│ │ ├── Bugle
│ │ │ └── Sources
│ │ │ │ ├── Bugle+Ext.swift
│ │ │ │ ├── Bugle+Merge.swift
│ │ │ │ ├── Bugle.swift
│ │ │ │ ├── BuglePiece.swift
│ │ │ │ └── BugleType.swift
│ │ ├── LICENSE
│ │ └── README.md
│ │ ├── Manifest.lock
│ │ ├── Pods.xcodeproj
│ │ └── project.pbxproj
│ │ └── Target Support Files
│ │ ├── Bugle
│ │ ├── Bugle-dummy.m
│ │ ├── Bugle-prefix.pch
│ │ ├── Bugle-umbrella.h
│ │ ├── Bugle.modulemap
│ │ └── Info.plist
│ │ └── Pods-CocoaPods
│ │ ├── Info.plist
│ │ ├── Pods-CocoaPods-acknowledgements.markdown
│ │ ├── Pods-CocoaPods-acknowledgements.plist
│ │ ├── Pods-CocoaPods-dummy.m
│ │ ├── Pods-CocoaPods-frameworks.sh
│ │ ├── Pods-CocoaPods-resources.sh
│ │ ├── Pods-CocoaPods-umbrella.h
│ │ └── Pods-CocoaPods.modulemap
├── Databases
│ ├── MoviesList.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── MoviesList
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── MoviesList.xcdatamodeld
│ │ ├── .xccurrentversion
│ │ └── MoviesList.xcdatamodel
│ │ │ └── contents
│ │ ├── ViewController+Data.swift
│ │ ├── ViewController+Ext.swift
│ │ └── ViewController.swift
├── Delegation
│ ├── Delegation.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── Delegation
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── SongLoader.swift
│ │ ├── SongLoaderResponder.swift
│ │ └── ViewController.swift
├── Dispatcher
│ ├── Dispatcher.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── Dispatcher
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── DispatcherViewController.swift
│ │ ├── Info.plist
│ │ └── SecondScreenViewController.swift
├── HolaMundo
│ ├── HolaMundo.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── HolaMundo
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── LoginForm
│ ├── LoginForm.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── LoginForm
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ └── LaunchScreen.storyboard
│ │ ├── Common
│ │ ├── Controllers
│ │ │ └── DataTableViewController.swift
│ │ ├── Data
│ │ │ ├── AppDataSource.swift
│ │ │ ├── AppParser.swift
│ │ │ ├── DataSource.swift
│ │ │ └── Parser.swift
│ │ ├── Decorators
│ │ │ ├── AppCellDecorator.swift
│ │ │ └── CellDecorator.swift
│ │ ├── Navigation
│ │ │ └── UIViewController+Navigation.swift
│ │ └── ViewPresenter
│ │ │ ├── BaseView.swift
│ │ │ ├── BaseViewController.swift
│ │ │ └── BaseViewControllerIndicator.swift
│ │ ├── Data
│ │ ├── Local
│ │ │ ├── LocalKeys.swift
│ │ │ ├── Managers
│ │ │ │ └── DispatchManager.swift
│ │ │ └── Protocols
│ │ │ │ └── DispatchManagerProtocol.swift
│ │ └── Remote
│ │ │ ├── PokemonsParser.swift
│ │ │ └── PokemonsService.swift
│ │ ├── Decorators
│ │ └── SimplePokemonCellDecorator.swift
│ │ ├── Domain
│ │ ├── Pokemon.swift
│ │ └── SimplePokemon.swift
│ │ ├── Info.plist
│ │ └── Presentation
│ │ ├── Dispatch
│ │ ├── Dispatch.storyboard
│ │ └── DispatchViewController.swift
│ │ ├── Login
│ │ ├── Login.storyboard
│ │ ├── LoginContract.swift
│ │ ├── LoginPresenter.swift
│ │ └── LoginViewController.swift
│ │ └── Pokemons
│ │ ├── Pokemons.storyboard
│ │ └── PokemonsTableViewController.swift
├── Navigation
│ ├── Navigation.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── Navigation
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ └── LaunchScreen.storyboard
│ │ ├── Common
│ │ └── UIViewController+Navigation.swift
│ │ ├── Dispatch
│ │ ├── Base.lproj
│ │ │ └── Dispatch.storyboard
│ │ └── DispatchViewController.swift
│ │ ├── HubSpoke
│ │ └── HubSpoke.storyboard
│ │ ├── Info.plist
│ │ ├── NestedDoll
│ │ ├── CameraTableViewController.swift
│ │ ├── GeneralTableViewController.swift
│ │ ├── NestedDoll.storyboard
│ │ └── SettingsTableViewController.swift
│ │ └── TabbedView
│ │ └── TabbedView.storyboard
├── OutletCatalog
│ ├── OutletCatalog.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── OutletCatalog
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── Pokedex
│ ├── .gitignore
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ │ ├── Alamofire
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── Source
│ │ │ │ ├── AFError.swift
│ │ │ │ ├── Alamofire.swift
│ │ │ │ ├── DispatchQueue+Alamofire.swift
│ │ │ │ ├── MultipartFormData.swift
│ │ │ │ ├── NetworkReachabilityManager.swift
│ │ │ │ ├── Notifications.swift
│ │ │ │ ├── ParameterEncoding.swift
│ │ │ │ ├── Request.swift
│ │ │ │ ├── Response.swift
│ │ │ │ ├── ResponseSerialization.swift
│ │ │ │ ├── Result.swift
│ │ │ │ ├── ServerTrustPolicy.swift
│ │ │ │ ├── SessionDelegate.swift
│ │ │ │ ├── SessionManager.swift
│ │ │ │ ├── TaskDelegate.swift
│ │ │ │ ├── Timeline.swift
│ │ │ │ └── Validation.swift
│ │ ├── Bugle
│ │ │ ├── Bugle
│ │ │ │ └── Sources
│ │ │ │ │ ├── Bugle+Ext.swift
│ │ │ │ │ ├── Bugle+Merge.swift
│ │ │ │ │ ├── Bugle.swift
│ │ │ │ │ ├── BuglePiece.swift
│ │ │ │ │ └── BugleType.swift
│ │ │ ├── LICENSE
│ │ │ └── README.md
│ │ ├── Manifest.lock
│ │ ├── Pods.xcodeproj
│ │ │ └── project.pbxproj
│ │ ├── SDWebImage
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── SDWebImage
│ │ │ │ ├── NSButton+WebCache.h
│ │ │ │ ├── NSButton+WebCache.m
│ │ │ │ ├── NSData+ImageContentType.h
│ │ │ │ ├── NSData+ImageContentType.m
│ │ │ │ ├── NSImage+WebCache.h
│ │ │ │ ├── NSImage+WebCache.m
│ │ │ │ ├── SDAnimatedImageRep.h
│ │ │ │ ├── SDAnimatedImageRep.m
│ │ │ │ ├── SDImageCache.h
│ │ │ │ ├── SDImageCache.m
│ │ │ │ ├── SDImageCacheConfig.h
│ │ │ │ ├── SDImageCacheConfig.m
│ │ │ │ ├── SDWebImageCoder.h
│ │ │ │ ├── SDWebImageCoder.m
│ │ │ │ ├── SDWebImageCoderHelper.h
│ │ │ │ ├── SDWebImageCoderHelper.m
│ │ │ │ ├── SDWebImageCodersManager.h
│ │ │ │ ├── SDWebImageCodersManager.m
│ │ │ │ ├── SDWebImageCompat.h
│ │ │ │ ├── SDWebImageCompat.m
│ │ │ │ ├── SDWebImageDownloader.h
│ │ │ │ ├── SDWebImageDownloader.m
│ │ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ │ ├── SDWebImageDownloaderOperation.m
│ │ │ │ ├── SDWebImageFrame.h
│ │ │ │ ├── SDWebImageFrame.m
│ │ │ │ ├── SDWebImageGIFCoder.h
│ │ │ │ ├── SDWebImageGIFCoder.m
│ │ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ │ ├── SDWebImageImageIOCoder.m
│ │ │ │ ├── SDWebImageManager.h
│ │ │ │ ├── SDWebImageManager.m
│ │ │ │ ├── SDWebImageOperation.h
│ │ │ │ ├── SDWebImagePrefetcher.h
│ │ │ │ ├── SDWebImagePrefetcher.m
│ │ │ │ ├── SDWebImageTransition.h
│ │ │ │ ├── SDWebImageTransition.m
│ │ │ │ ├── UIButton+WebCache.h
│ │ │ │ ├── UIButton+WebCache.m
│ │ │ │ ├── UIImage+ForceDecode.h
│ │ │ │ ├── UIImage+ForceDecode.m
│ │ │ │ ├── UIImage+GIF.h
│ │ │ │ ├── UIImage+GIF.m
│ │ │ │ ├── UIImage+MultiFormat.h
│ │ │ │ ├── UIImage+MultiFormat.m
│ │ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ │ ├── UIImageView+HighlightedWebCache.m
│ │ │ │ ├── UIImageView+WebCache.h
│ │ │ │ ├── UIImageView+WebCache.m
│ │ │ │ ├── UIView+WebCache.h
│ │ │ │ ├── UIView+WebCache.m
│ │ │ │ ├── UIView+WebCacheOperation.h
│ │ │ │ └── UIView+WebCacheOperation.m
│ │ └── Target Support Files
│ │ │ ├── Alamofire
│ │ │ ├── Alamofire-dummy.m
│ │ │ ├── Alamofire-prefix.pch
│ │ │ ├── Alamofire-umbrella.h
│ │ │ ├── Alamofire.modulemap
│ │ │ └── Info.plist
│ │ │ ├── Bugle
│ │ │ ├── Bugle-dummy.m
│ │ │ ├── Bugle-prefix.pch
│ │ │ ├── Bugle-umbrella.h
│ │ │ ├── Bugle.modulemap
│ │ │ └── Info.plist
│ │ │ ├── Pods-Pokedex
│ │ │ ├── Info.plist
│ │ │ ├── Pods-Pokedex-acknowledgements.markdown
│ │ │ ├── Pods-Pokedex-acknowledgements.plist
│ │ │ ├── Pods-Pokedex-dummy.m
│ │ │ ├── Pods-Pokedex-frameworks.sh
│ │ │ ├── Pods-Pokedex-resources.sh
│ │ │ ├── Pods-Pokedex-umbrella.h
│ │ │ └── Pods-Pokedex.modulemap
│ │ │ └── SDWebImage
│ │ │ ├── Info.plist
│ │ │ ├── SDWebImage-dummy.m
│ │ │ ├── SDWebImage-prefix.pch
│ │ │ ├── SDWebImage-umbrella.h
│ │ │ └── SDWebImage.modulemap
│ ├── Pokedex.xcodeproj
│ │ └── project.pbxproj
│ ├── Pokedex.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── Pokedex
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── black.colorset
│ │ │ └── Contents.json
│ │ ├── bluish.colorset
│ │ │ └── Contents.json
│ │ ├── booger.colorset
│ │ │ └── Contents.json
│ │ ├── brick.colorset
│ │ │ └── Contents.json
│ │ ├── coolGrey.colorset
│ │ │ └── Contents.json
│ │ ├── dullOrange.colorset
│ │ │ └── Contents.json
│ │ ├── dustyLavender.colorset
│ │ │ └── Contents.json
│ │ ├── frenchBlue.colorset
│ │ │ └── Contents.json
│ │ ├── lightEggplant.colorset
│ │ │ └── Contents.json
│ │ ├── logo.imageset
│ │ │ ├── Contents.json
│ │ │ ├── bitmap.png
│ │ │ ├── bitmap@2x.png
│ │ │ └── bitmap@3x.png
│ │ ├── maize.colorset
│ │ │ └── Contents.json
│ │ ├── purpleishBlue.colorset
│ │ │ └── Contents.json
│ │ ├── roundedbutton.imageset
│ │ │ ├── Contents.json
│ │ │ ├── rectangle2.png
│ │ │ ├── rectangle2@2x.png
│ │ │ └── rectangle2@3x.png
│ │ ├── slateGrey.colorset
│ │ │ └── Contents.json
│ │ ├── softBlue.colorset
│ │ │ └── Contents.json
│ │ ├── steelGrey.colorset
│ │ │ └── Contents.json
│ │ ├── textColor.colorset
│ │ │ └── Contents.json
│ │ ├── turtleGreen.colorset
│ │ │ └── Contents.json
│ │ ├── twilight.colorset
│ │ │ └── Contents.json
│ │ ├── vermillion.colorset
│ │ │ └── Contents.json
│ │ ├── white.colorset
│ │ │ └── Contents.json
│ │ └── windowsBlue.colorset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ └── LaunchScreen.storyboard
│ │ ├── Common
│ │ ├── Controllers
│ │ │ └── DataTableViewController.swift
│ │ ├── Data
│ │ │ ├── AppDataSource.swift
│ │ │ ├── AppParser.swift
│ │ │ ├── DataSource.swift
│ │ │ └── Parser.swift
│ │ ├── Decorators
│ │ │ ├── AppCellDecorator.swift
│ │ │ └── CellDecorator.swift
│ │ ├── Extensions
│ │ │ ├── String+Ext.swift
│ │ │ ├── UIColor+Additions.swift
│ │ │ ├── UIView+Animations.swift
│ │ │ └── UIViewController+Positions.swift
│ │ ├── Navigation
│ │ │ └── UIViewController+Navigation.swift
│ │ └── ViewPresenter
│ │ │ ├── BaseView.swift
│ │ │ ├── BaseViewController.swift
│ │ │ └── BaseViewControllerIndicator.swift
│ │ ├── Data
│ │ ├── Local
│ │ │ ├── LocelKeys.swift
│ │ │ ├── Managers
│ │ │ │ └── SessionManager.swift
│ │ │ └── Protocols
│ │ │ │ └── SessionManagerProtocol.swift
│ │ └── Remote
│ │ │ ├── PokemonsParser.swift
│ │ │ └── PokemonsService.swift
│ │ ├── Decorators
│ │ ├── PokemonCollectionCellDecorator.swift
│ │ └── SimplePokemonCellDecorator.swift
│ │ ├── Domain
│ │ ├── Pokemon.swift
│ │ ├── Session.swift
│ │ └── SimplePokemon.swift
│ │ ├── Info.plist
│ │ └── Presentation
│ │ ├── Pokemons
│ │ ├── Cell
│ │ │ ├── PokemonCollectionViewCell.swift
│ │ │ └── PokemonCollectionViewCell.xib
│ │ ├── Pokemons.storyboard
│ │ └── PokemonsViewController.swift
│ │ └── Welcome
│ │ ├── Welcome.storyboard
│ │ ├── WelcomeContract.swift
│ │ ├── WelcomePresenter.swift
│ │ └── WelcomeViewController.swift
├── PokedexP2
│ ├── .gitignore
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ │ ├── Alamofire
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── Source
│ │ │ │ ├── AFError.swift
│ │ │ │ ├── Alamofire.swift
│ │ │ │ ├── DispatchQueue+Alamofire.swift
│ │ │ │ ├── MultipartFormData.swift
│ │ │ │ ├── NetworkReachabilityManager.swift
│ │ │ │ ├── Notifications.swift
│ │ │ │ ├── ParameterEncoding.swift
│ │ │ │ ├── Request.swift
│ │ │ │ ├── Response.swift
│ │ │ │ ├── ResponseSerialization.swift
│ │ │ │ ├── Result.swift
│ │ │ │ ├── ServerTrustPolicy.swift
│ │ │ │ ├── SessionDelegate.swift
│ │ │ │ ├── SessionManager.swift
│ │ │ │ ├── TaskDelegate.swift
│ │ │ │ ├── Timeline.swift
│ │ │ │ └── Validation.swift
│ │ ├── Bugle
│ │ │ ├── Bugle
│ │ │ │ └── Sources
│ │ │ │ │ ├── Bugle+Ext.swift
│ │ │ │ │ ├── Bugle+Merge.swift
│ │ │ │ │ ├── Bugle.swift
│ │ │ │ │ ├── BuglePiece.swift
│ │ │ │ │ └── BugleType.swift
│ │ │ ├── LICENSE
│ │ │ └── README.md
│ │ ├── Manifest.lock
│ │ ├── Pods.xcodeproj
│ │ │ └── project.pbxproj
│ │ ├── SDWebImage
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── SDWebImage
│ │ │ │ ├── NSButton+WebCache.h
│ │ │ │ ├── NSButton+WebCache.m
│ │ │ │ ├── NSData+ImageContentType.h
│ │ │ │ ├── NSData+ImageContentType.m
│ │ │ │ ├── NSImage+WebCache.h
│ │ │ │ ├── NSImage+WebCache.m
│ │ │ │ ├── SDAnimatedImageRep.h
│ │ │ │ ├── SDAnimatedImageRep.m
│ │ │ │ ├── SDImageCache.h
│ │ │ │ ├── SDImageCache.m
│ │ │ │ ├── SDImageCacheConfig.h
│ │ │ │ ├── SDImageCacheConfig.m
│ │ │ │ ├── SDWebImageCoder.h
│ │ │ │ ├── SDWebImageCoder.m
│ │ │ │ ├── SDWebImageCoderHelper.h
│ │ │ │ ├── SDWebImageCoderHelper.m
│ │ │ │ ├── SDWebImageCodersManager.h
│ │ │ │ ├── SDWebImageCodersManager.m
│ │ │ │ ├── SDWebImageCompat.h
│ │ │ │ ├── SDWebImageCompat.m
│ │ │ │ ├── SDWebImageDownloader.h
│ │ │ │ ├── SDWebImageDownloader.m
│ │ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ │ ├── SDWebImageDownloaderOperation.m
│ │ │ │ ├── SDWebImageFrame.h
│ │ │ │ ├── SDWebImageFrame.m
│ │ │ │ ├── SDWebImageGIFCoder.h
│ │ │ │ ├── SDWebImageGIFCoder.m
│ │ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ │ ├── SDWebImageImageIOCoder.m
│ │ │ │ ├── SDWebImageManager.h
│ │ │ │ ├── SDWebImageManager.m
│ │ │ │ ├── SDWebImageOperation.h
│ │ │ │ ├── SDWebImagePrefetcher.h
│ │ │ │ ├── SDWebImagePrefetcher.m
│ │ │ │ ├── SDWebImageTransition.h
│ │ │ │ ├── SDWebImageTransition.m
│ │ │ │ ├── UIButton+WebCache.h
│ │ │ │ ├── UIButton+WebCache.m
│ │ │ │ ├── UIImage+ForceDecode.h
│ │ │ │ ├── UIImage+ForceDecode.m
│ │ │ │ ├── UIImage+GIF.h
│ │ │ │ ├── UIImage+GIF.m
│ │ │ │ ├── UIImage+MultiFormat.h
│ │ │ │ ├── UIImage+MultiFormat.m
│ │ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ │ ├── UIImageView+HighlightedWebCache.m
│ │ │ │ ├── UIImageView+WebCache.h
│ │ │ │ ├── UIImageView+WebCache.m
│ │ │ │ ├── UIView+WebCache.h
│ │ │ │ ├── UIView+WebCache.m
│ │ │ │ ├── UIView+WebCacheOperation.h
│ │ │ │ └── UIView+WebCacheOperation.m
│ │ └── Target Support Files
│ │ │ ├── Alamofire
│ │ │ ├── Alamofire-dummy.m
│ │ │ ├── Alamofire-prefix.pch
│ │ │ ├── Alamofire-umbrella.h
│ │ │ ├── Alamofire.modulemap
│ │ │ └── Info.plist
│ │ │ ├── Bugle
│ │ │ ├── Bugle-dummy.m
│ │ │ ├── Bugle-prefix.pch
│ │ │ ├── Bugle-umbrella.h
│ │ │ ├── Bugle.modulemap
│ │ │ └── Info.plist
│ │ │ ├── Pods-Pokedex
│ │ │ ├── Info.plist
│ │ │ ├── Pods-Pokedex-acknowledgements.markdown
│ │ │ ├── Pods-Pokedex-acknowledgements.plist
│ │ │ ├── Pods-Pokedex-dummy.m
│ │ │ ├── Pods-Pokedex-frameworks.sh
│ │ │ ├── Pods-Pokedex-resources.sh
│ │ │ ├── Pods-Pokedex-umbrella.h
│ │ │ └── Pods-Pokedex.modulemap
│ │ │ └── SDWebImage
│ │ │ ├── Info.plist
│ │ │ ├── SDWebImage-dummy.m
│ │ │ ├── SDWebImage-prefix.pch
│ │ │ ├── SDWebImage-umbrella.h
│ │ │ └── SDWebImage.modulemap
│ ├── Pokedex.xcodeproj
│ │ └── project.pbxproj
│ ├── Pokedex.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── Pokedex
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── black.colorset
│ │ │ └── Contents.json
│ │ ├── bluish.colorset
│ │ │ └── Contents.json
│ │ ├── booger.colorset
│ │ │ └── Contents.json
│ │ ├── brick.colorset
│ │ │ └── Contents.json
│ │ ├── coolGrey.colorset
│ │ │ └── Contents.json
│ │ ├── dullOrange.colorset
│ │ │ └── Contents.json
│ │ ├── dustyLavender.colorset
│ │ │ └── Contents.json
│ │ ├── frenchBlue.colorset
│ │ │ └── Contents.json
│ │ ├── lightEggplant.colorset
│ │ │ └── Contents.json
│ │ ├── maize.colorset
│ │ │ └── Contents.json
│ │ ├── pokedex.imageset
│ │ │ ├── Contents.json
│ │ │ ├── bitmap.png
│ │ │ ├── bitmap@2x.png
│ │ │ └── bitmap@3x.png
│ │ ├── purpleishBlue.colorset
│ │ │ └── Contents.json
│ │ ├── roundedbutton.imageset
│ │ │ ├── Contents.json
│ │ │ ├── rectangle2.png
│ │ │ ├── rectangle2@2x.png
│ │ │ └── rectangle2@3x.png
│ │ ├── slateGrey.colorset
│ │ │ └── Contents.json
│ │ ├── softBlue.colorset
│ │ │ └── Contents.json
│ │ ├── steelGrey.colorset
│ │ │ └── Contents.json
│ │ ├── textColor.colorset
│ │ │ └── Contents.json
│ │ ├── turtleGreen.colorset
│ │ │ └── Contents.json
│ │ ├── twilight.colorset
│ │ │ └── Contents.json
│ │ ├── vermillion.colorset
│ │ │ └── Contents.json
│ │ ├── white.colorset
│ │ │ └── Contents.json
│ │ └── windowsBlue.colorset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ └── LaunchScreen.storyboard
│ │ ├── Common
│ │ ├── Controllers
│ │ │ └── DataTableViewController.swift
│ │ ├── Data
│ │ │ ├── AppDataSource.swift
│ │ │ ├── AppParser.swift
│ │ │ ├── DataSource.swift
│ │ │ └── Parser.swift
│ │ ├── Decorators
│ │ │ ├── AppCellDecorator.swift
│ │ │ └── CellDecorator.swift
│ │ ├── Extensions
│ │ │ ├── String+Ext.swift
│ │ │ ├── String+Formatter.swift
│ │ │ ├── UIColor+Additions.swift
│ │ │ ├── UIImageView+Ext.swift
│ │ │ ├── UIView+Animations.swift
│ │ │ └── UIViewController+Positions.swift
│ │ ├── Navigation
│ │ │ └── UIViewController+Navigation.swift
│ │ └── ViewPresenter
│ │ │ ├── BaseView.swift
│ │ │ ├── BaseViewController.swift
│ │ │ └── BaseViewControllerIndicator.swift
│ │ ├── Data
│ │ ├── Local
│ │ │ ├── LocelKeys.swift
│ │ │ ├── Managers
│ │ │ │ └── SessionManager.swift
│ │ │ └── Protocols
│ │ │ │ └── SessionManagerProtocol.swift
│ │ └── Remote
│ │ │ ├── PokemonsParser.swift
│ │ │ └── PokemonsService.swift
│ │ ├── Decorators
│ │ ├── PokemonCollectionCellDecorator.swift
│ │ └── SimplePokemonCellDecorator.swift
│ │ ├── Domain
│ │ ├── Pokemon.swift
│ │ ├── PokemonType.swift
│ │ ├── Session.swift
│ │ └── SimplePokemon.swift
│ │ ├── Info.plist
│ │ └── Presentation
│ │ ├── Pokemons
│ │ ├── Cell
│ │ │ ├── PokemonCollectionViewCell.swift
│ │ │ └── PokemonCollectionViewCell.xib
│ │ ├── Pokemons.storyboard
│ │ └── PokemonsViewController.swift
│ │ └── Welcome
│ │ ├── Welcome.storyboard
│ │ ├── WelcomeContract.swift
│ │ ├── WelcomePresenter.swift
│ │ └── WelcomeViewController.swift
├── PokedexP3
│ ├── .gitignore
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ │ ├── Alamofire
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── Source
│ │ │ │ ├── AFError.swift
│ │ │ │ ├── Alamofire.swift
│ │ │ │ ├── DispatchQueue+Alamofire.swift
│ │ │ │ ├── MultipartFormData.swift
│ │ │ │ ├── NetworkReachabilityManager.swift
│ │ │ │ ├── Notifications.swift
│ │ │ │ ├── ParameterEncoding.swift
│ │ │ │ ├── Request.swift
│ │ │ │ ├── Response.swift
│ │ │ │ ├── ResponseSerialization.swift
│ │ │ │ ├── Result.swift
│ │ │ │ ├── ServerTrustPolicy.swift
│ │ │ │ ├── SessionDelegate.swift
│ │ │ │ ├── SessionManager.swift
│ │ │ │ ├── TaskDelegate.swift
│ │ │ │ ├── Timeline.swift
│ │ │ │ └── Validation.swift
│ │ ├── Bugle
│ │ │ ├── Bugle
│ │ │ │ └── Sources
│ │ │ │ │ ├── Bugle+Ext.swift
│ │ │ │ │ ├── Bugle+Merge.swift
│ │ │ │ │ ├── Bugle.swift
│ │ │ │ │ ├── BuglePiece.swift
│ │ │ │ │ └── BugleType.swift
│ │ │ ├── LICENSE
│ │ │ └── README.md
│ │ ├── Manifest.lock
│ │ ├── Pods.xcodeproj
│ │ │ └── project.pbxproj
│ │ ├── SDWebImage
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── SDWebImage
│ │ │ │ ├── NSButton+WebCache.h
│ │ │ │ ├── NSButton+WebCache.m
│ │ │ │ ├── NSData+ImageContentType.h
│ │ │ │ ├── NSData+ImageContentType.m
│ │ │ │ ├── NSImage+WebCache.h
│ │ │ │ ├── NSImage+WebCache.m
│ │ │ │ ├── SDAnimatedImageRep.h
│ │ │ │ ├── SDAnimatedImageRep.m
│ │ │ │ ├── SDImageCache.h
│ │ │ │ ├── SDImageCache.m
│ │ │ │ ├── SDImageCacheConfig.h
│ │ │ │ ├── SDImageCacheConfig.m
│ │ │ │ ├── SDWebImageCoder.h
│ │ │ │ ├── SDWebImageCoder.m
│ │ │ │ ├── SDWebImageCoderHelper.h
│ │ │ │ ├── SDWebImageCoderHelper.m
│ │ │ │ ├── SDWebImageCodersManager.h
│ │ │ │ ├── SDWebImageCodersManager.m
│ │ │ │ ├── SDWebImageCompat.h
│ │ │ │ ├── SDWebImageCompat.m
│ │ │ │ ├── SDWebImageDownloader.h
│ │ │ │ ├── SDWebImageDownloader.m
│ │ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ │ ├── SDWebImageDownloaderOperation.m
│ │ │ │ ├── SDWebImageFrame.h
│ │ │ │ ├── SDWebImageFrame.m
│ │ │ │ ├── SDWebImageGIFCoder.h
│ │ │ │ ├── SDWebImageGIFCoder.m
│ │ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ │ ├── SDWebImageImageIOCoder.m
│ │ │ │ ├── SDWebImageManager.h
│ │ │ │ ├── SDWebImageManager.m
│ │ │ │ ├── SDWebImageOperation.h
│ │ │ │ ├── SDWebImagePrefetcher.h
│ │ │ │ ├── SDWebImagePrefetcher.m
│ │ │ │ ├── SDWebImageTransition.h
│ │ │ │ ├── SDWebImageTransition.m
│ │ │ │ ├── UIButton+WebCache.h
│ │ │ │ ├── UIButton+WebCache.m
│ │ │ │ ├── UIImage+ForceDecode.h
│ │ │ │ ├── UIImage+ForceDecode.m
│ │ │ │ ├── UIImage+GIF.h
│ │ │ │ ├── UIImage+GIF.m
│ │ │ │ ├── UIImage+MultiFormat.h
│ │ │ │ ├── UIImage+MultiFormat.m
│ │ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ │ ├── UIImageView+HighlightedWebCache.m
│ │ │ │ ├── UIImageView+WebCache.h
│ │ │ │ ├── UIImageView+WebCache.m
│ │ │ │ ├── UIView+WebCache.h
│ │ │ │ ├── UIView+WebCache.m
│ │ │ │ ├── UIView+WebCacheOperation.h
│ │ │ │ └── UIView+WebCacheOperation.m
│ │ └── Target Support Files
│ │ │ ├── Alamofire
│ │ │ ├── Alamofire-dummy.m
│ │ │ ├── Alamofire-prefix.pch
│ │ │ ├── Alamofire-umbrella.h
│ │ │ ├── Alamofire.modulemap
│ │ │ └── Info.plist
│ │ │ ├── Bugle
│ │ │ ├── Bugle-dummy.m
│ │ │ ├── Bugle-prefix.pch
│ │ │ ├── Bugle-umbrella.h
│ │ │ ├── Bugle.modulemap
│ │ │ └── Info.plist
│ │ │ ├── Pods-Pokedex
│ │ │ ├── Info.plist
│ │ │ ├── Pods-Pokedex-acknowledgements.markdown
│ │ │ ├── Pods-Pokedex-acknowledgements.plist
│ │ │ ├── Pods-Pokedex-dummy.m
│ │ │ ├── Pods-Pokedex-frameworks.sh
│ │ │ ├── Pods-Pokedex-resources.sh
│ │ │ ├── Pods-Pokedex-umbrella.h
│ │ │ └── Pods-Pokedex.modulemap
│ │ │ └── SDWebImage
│ │ │ ├── Info.plist
│ │ │ ├── SDWebImage-dummy.m
│ │ │ ├── SDWebImage-prefix.pch
│ │ │ ├── SDWebImage-umbrella.h
│ │ │ └── SDWebImage.modulemap
│ ├── Pokedex.xcodeproj
│ │ └── project.pbxproj
│ ├── Pokedex.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── Pokedex
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── black.colorset
│ │ │ └── Contents.json
│ │ ├── bluish.colorset
│ │ │ └── Contents.json
│ │ ├── booger.colorset
│ │ │ └── Contents.json
│ │ ├── brick.colorset
│ │ │ └── Contents.json
│ │ ├── coolGrey.colorset
│ │ │ └── Contents.json
│ │ ├── dullOrange.colorset
│ │ │ └── Contents.json
│ │ ├── dustyLavender.colorset
│ │ │ └── Contents.json
│ │ ├── filter.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ifFilter1608702.png
│ │ │ ├── ifFilter1608702@2x.png
│ │ │ └── ifFilter1608702@3x.png
│ │ ├── frenchBlue.colorset
│ │ │ └── Contents.json
│ │ ├── lightEggplant.colorset
│ │ │ └── Contents.json
│ │ ├── maize.colorset
│ │ │ └── Contents.json
│ │ ├── pokedex.imageset
│ │ │ ├── Contents.json
│ │ │ ├── bitmap.png
│ │ │ ├── bitmap@2x.png
│ │ │ └── bitmap@3x.png
│ │ ├── purpleishBlue.colorset
│ │ │ └── Contents.json
│ │ ├── roundedbutton.imageset
│ │ │ ├── Contents.json
│ │ │ ├── rectangle2.png
│ │ │ ├── rectangle2@2x.png
│ │ │ └── rectangle2@3x.png
│ │ ├── slateGrey.colorset
│ │ │ └── Contents.json
│ │ ├── softBlue.colorset
│ │ │ └── Contents.json
│ │ ├── steelGrey.colorset
│ │ │ └── Contents.json
│ │ ├── textColor.colorset
│ │ │ └── Contents.json
│ │ ├── turtleGreen.colorset
│ │ │ └── Contents.json
│ │ ├── twilight.colorset
│ │ │ └── Contents.json
│ │ ├── vermillion.colorset
│ │ │ └── Contents.json
│ │ ├── white.colorset
│ │ │ └── Contents.json
│ │ └── windowsBlue.colorset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ └── LaunchScreen.storyboard
│ │ ├── Common
│ │ ├── Controllers
│ │ │ └── DataTableViewController.swift
│ │ ├── Data
│ │ │ ├── AppDataSource.swift
│ │ │ ├── AppParser.swift
│ │ │ ├── DataSource.swift
│ │ │ └── Parser.swift
│ │ ├── Decorators
│ │ │ ├── AppCellDecorator.swift
│ │ │ └── CellDecorator.swift
│ │ ├── Extensions
│ │ │ ├── String+Ext.swift
│ │ │ ├── String+Formatter.swift
│ │ │ ├── UIColor+Additions.swift
│ │ │ ├── UIImageView+Ext.swift
│ │ │ ├── UIView+Animations.swift
│ │ │ └── UIViewController+Positions.swift
│ │ ├── Navigation
│ │ │ └── UIViewController+Navigation.swift
│ │ └── ViewPresenter
│ │ │ ├── BaseView.swift
│ │ │ ├── BaseViewController.swift
│ │ │ └── BaseViewControllerIndicator.swift
│ │ ├── Data
│ │ ├── Local
│ │ │ ├── LocelKeys.swift
│ │ │ ├── Managers
│ │ │ │ └── SessionManager.swift
│ │ │ └── Protocols
│ │ │ │ └── SessionManagerProtocol.swift
│ │ └── Remote
│ │ │ ├── PokemonsParser.swift
│ │ │ └── PokemonsService.swift
│ │ ├── Decorators
│ │ ├── PokemonCollectionCellDecorator.swift
│ │ ├── SimplePokemonCellDecorator.swift
│ │ └── TypeTableCellDecorator.swift
│ │ ├── Domain
│ │ ├── Pokemon.swift
│ │ ├── PokemonType.swift
│ │ ├── Session.swift
│ │ └── SimplePokemon.swift
│ │ ├── Info.plist
│ │ └── Presentation
│ │ ├── Pokemons
│ │ ├── Cell
│ │ │ ├── PokemonCollectionViewCell.swift
│ │ │ └── PokemonCollectionViewCell.xib
│ │ ├── Pokemons.storyboard
│ │ └── PokemonsViewController.swift
│ │ ├── Types
│ │ ├── Cell
│ │ │ ├── TypeTableViewCell.swift
│ │ │ └── TypeTableViewCell.xib
│ │ ├── Types.storyboard
│ │ └── TypesViewController.swift
│ │ └── Welcome
│ │ ├── Welcome.storyboard
│ │ ├── WelcomeContract.swift
│ │ ├── WelcomePresenter.swift
│ │ └── WelcomeViewController.swift
├── SimpleAPIClient
│ ├── SimpleAPIClient.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── SimpleAPIClient
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Data
│ │ ├── AppDataSource.swift
│ │ ├── DataHelper.swift
│ │ ├── DataSource.swift
│ │ ├── Parser.swift
│ │ └── PokemonsParser.swift
│ │ ├── Decorators
│ │ ├── AppCellDecorator.swift
│ │ ├── CellDecorator.swift
│ │ └── SimplePokemonCellDecorator.swift
│ │ ├── Domain
│ │ ├── Pokemon.swift
│ │ └── SimplePokemon.swift
│ │ ├── Info.plist
│ │ └── Presentation
│ │ ├── BaseViewControllerIndicator.swift
│ │ ├── DataTableViewController.swift
│ │ └── PokemonsTableViewController.swift
├── TableView
│ ├── TableView.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── TableView
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Data
│ │ ├── DataHelper.swift
│ │ ├── DataSource.swift
│ │ └── MoviesDataSource.swift
│ │ ├── Decorators
│ │ ├── EmojiMovieCellDecorator.swift
│ │ ├── MovieCellDecorator.swift
│ │ └── SimpleMovieCellDecorator.swift
│ │ ├── Domain
│ │ ├── EmojiMovieRepresentation.swift
│ │ ├── Movie.swift
│ │ └── SimpleMovie.swift
│ │ ├── Extensions
│ │ └── UIViewController+Ext.swift
│ │ ├── Info.plist
│ │ └── Movies
│ │ ├── DetailViewController.swift
│ │ └── MasterViewController.swift
└── UserDefaults
│ ├── UserDefaults.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── UserDefaults
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ └── LaunchScreen.storyboard
│ ├── Common
│ ├── Controllers
│ │ └── DataTableViewController.swift
│ ├── Data
│ │ ├── AppDataSource.swift
│ │ ├── AppParser.swift
│ │ ├── DataSource.swift
│ │ └── Parser.swift
│ ├── Decorators
│ │ ├── AppCellDecorator.swift
│ │ └── CellDecorator.swift
│ ├── Navigation
│ │ └── UIViewController+Navigation.swift
│ └── ViewPresenter
│ │ ├── BaseView.swift
│ │ ├── BaseViewController.swift
│ │ └── BaseViewControllerIndicator.swift
│ ├── Data
│ ├── Local
│ │ ├── LocelKeys.swift
│ │ ├── Managers
│ │ │ ├── DispatchManager.swift
│ │ │ └── SessionManager.swift
│ │ └── Protocols
│ │ │ ├── DispatchManagerProtocol.swift
│ │ │ └── SessionManagerProtocol.swift
│ └── Remote
│ │ ├── PokemonsParser.swift
│ │ └── PokemonsService.swift
│ ├── Decorators
│ └── SimplePokemonCellDecorator.swift
│ ├── Domain
│ ├── Pokemon.swift
│ ├── Session.swift
│ └── SimplePokemon.swift
│ ├── Info.plist
│ └── Presentation
│ ├── Dispatch
│ ├── Dispatch.storyboard
│ └── DispatchViewController.swift
│ ├── Login
│ ├── Login.storyboard
│ ├── LoginContract.swift
│ ├── LoginPresenter.swift
│ └── LoginViewController.swift
│ └── Pokemons
│ ├── Pokemons.storyboard
│ └── PokemonsTableViewController.swift
├── README.md
└── Starters
├── .gitkeep
├── Alerts
├── Alerts.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── Alerts
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── ViewController.swift
├── CocoaPods
├── CocoaPods.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── CocoaPods
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── ViewController.swift
├── Delegation
├── Delegation.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── Delegation
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ ├── SongLoader.swift
│ ├── SongLoaderResponder.swift
│ └── ViewController.swift
├── LoginForm
├── LoginForm.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── LoginForm
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ └── LaunchScreen.storyboard
│ ├── Common
│ ├── BaseViewControllerIndicator.swift
│ ├── Controllers
│ │ └── DataTableViewController.swift
│ ├── Data
│ │ ├── AppDataSource.swift
│ │ ├── AppParser.swift
│ │ ├── DataSource.swift
│ │ └── Parser.swift
│ ├── Decorators
│ │ ├── AppCellDecorator.swift
│ │ └── CellDecorator.swift
│ └── Navigation
│ │ └── UIViewController+Navigation.swift
│ ├── Data
│ └── Remote
│ │ ├── PokemonsParser.swift
│ │ └── PokemonsService.swift
│ ├── Decorators
│ └── SimplePokemonCellDecorator.swift
│ ├── Domain
│ ├── Pokemon.swift
│ └── SimplePokemon.swift
│ ├── Info.plist
│ └── Presentation
│ ├── Dispatch
│ ├── Dispatch.storyboard
│ └── DispatchViewController.swift
│ ├── Login
│ └── LoginViewController.swift
│ └── Pokemons
│ ├── Base.lproj
│ └── Pokemons.storyboard
│ └── PokemonsTableViewController.swift
├── LoginFormP2
├── LoginForm.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── LoginForm
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ └── LaunchScreen.storyboard
│ ├── Common
│ ├── Controllers
│ │ └── DataTableViewController.swift
│ ├── Data
│ │ ├── AppDataSource.swift
│ │ ├── AppParser.swift
│ │ ├── DataSource.swift
│ │ └── Parser.swift
│ ├── Decorators
│ │ ├── AppCellDecorator.swift
│ │ └── CellDecorator.swift
│ ├── Navigation
│ │ └── UIViewController+Navigation.swift
│ └── ViewPresenter
│ │ ├── BaseView.swift
│ │ ├── BaseViewController.swift
│ │ └── BaseViewControllerIndicator.swift
│ ├── Data
│ └── Remote
│ │ ├── PokemonsParser.swift
│ │ └── PokemonsService.swift
│ ├── Decorators
│ └── SimplePokemonCellDecorator.swift
│ ├── Domain
│ ├── Pokemon.swift
│ └── SimplePokemon.swift
│ ├── Info.plist
│ └── Presentation
│ ├── Dispatch
│ ├── Dispatch.storyboard
│ └── DispatchViewController.swift
│ ├── Login
│ ├── Login.storyboard
│ ├── LoginContract.swift
│ ├── LoginPresenter.swift
│ └── LoginViewController.swift
│ └── Pokemons
│ ├── Pokemons.storyboard
│ └── PokemonsTableViewController.swift
├── LoginFormP3
├── LoginForm.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── LoginForm
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ └── LaunchScreen.storyboard
│ ├── Common
│ ├── BaseViewControllerIndicator.swift
│ ├── Controllers
│ │ └── DataTableViewController.swift
│ ├── Data
│ │ ├── AppDataSource.swift
│ │ ├── AppParser.swift
│ │ ├── DataSource.swift
│ │ └── Parser.swift
│ ├── Decorators
│ │ ├── AppCellDecorator.swift
│ │ └── CellDecorator.swift
│ └── Navigation
│ │ └── UIViewController+Navigation.swift
│ ├── Data
│ └── Remote
│ │ ├── PokemonsParser.swift
│ │ └── PokemonsService.swift
│ ├── Decorators
│ └── SimplePokemonCellDecorator.swift
│ ├── Domain
│ ├── Pokemon.swift
│ └── SimplePokemon.swift
│ ├── Info.plist
│ └── Presentation
│ ├── Dispatch
│ ├── Dispatch.storyboard
│ └── DispatchViewController.swift
│ ├── Login
│ ├── Login.storyboard
│ ├── LoginContract.swift
│ ├── LoginPresenter.swift
│ └── LoginViewController.swift
│ └── Pokemons
│ ├── Pokemons.storyboard
│ └── PokemonsTableViewController.swift
├── NavigationP1
├── Navigation.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── Navigation
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ └── LaunchScreen.storyboard
│ ├── Common
│ └── UIViewController+Navigation.swift
│ ├── Dispatch
│ ├── Base.lproj
│ │ └── Dispatch.storyboard
│ └── DispatchViewController.swift
│ ├── HubSpoke
│ └── HubSpoke.storyboard
│ ├── Info.plist
│ ├── NestedDoll
│ └── NestedDoll.storyboard
│ └── TabbedView
│ └── TabbedView.storyboard
├── NavigationP2
├── Navigation.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── Navigation
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ └── LaunchScreen.storyboard
│ ├── Common
│ └── UIViewController+Navigation.swift
│ ├── Dispatch
│ ├── Base.lproj
│ │ └── Dispatch.storyboard
│ └── DispatchViewController.swift
│ ├── HubSpoke
│ └── HubSpoke.storyboard
│ ├── Info.plist
│ ├── NestedDoll
│ ├── CameraTableViewController.swift
│ ├── GeneralTableViewController.swift
│ ├── NestedDoll.storyboard
│ └── SettingsTableViewController.swift
│ └── TabbedView
│ └── TabbedView.storyboard
├── Pokedex
├── .gitignore
├── Podfile
├── Podfile.lock
├── Pods
│ ├── Alamofire
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── Source
│ │ │ ├── AFError.swift
│ │ │ ├── Alamofire.swift
│ │ │ ├── DispatchQueue+Alamofire.swift
│ │ │ ├── MultipartFormData.swift
│ │ │ ├── NetworkReachabilityManager.swift
│ │ │ ├── Notifications.swift
│ │ │ ├── ParameterEncoding.swift
│ │ │ ├── Request.swift
│ │ │ ├── Response.swift
│ │ │ ├── ResponseSerialization.swift
│ │ │ ├── Result.swift
│ │ │ ├── ServerTrustPolicy.swift
│ │ │ ├── SessionDelegate.swift
│ │ │ ├── SessionManager.swift
│ │ │ ├── TaskDelegate.swift
│ │ │ ├── Timeline.swift
│ │ │ └── Validation.swift
│ ├── Bugle
│ │ ├── Bugle
│ │ │ └── Sources
│ │ │ │ ├── Bugle+Ext.swift
│ │ │ │ ├── Bugle+Merge.swift
│ │ │ │ ├── Bugle.swift
│ │ │ │ ├── BuglePiece.swift
│ │ │ │ └── BugleType.swift
│ │ ├── LICENSE
│ │ └── README.md
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ └── project.pbxproj
│ ├── SDWebImage
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── SDWebImage
│ │ │ ├── NSButton+WebCache.h
│ │ │ ├── NSButton+WebCache.m
│ │ │ ├── NSData+ImageContentType.h
│ │ │ ├── NSData+ImageContentType.m
│ │ │ ├── NSImage+WebCache.h
│ │ │ ├── NSImage+WebCache.m
│ │ │ ├── SDAnimatedImageRep.h
│ │ │ ├── SDAnimatedImageRep.m
│ │ │ ├── SDImageCache.h
│ │ │ ├── SDImageCache.m
│ │ │ ├── SDImageCacheConfig.h
│ │ │ ├── SDImageCacheConfig.m
│ │ │ ├── SDWebImageCoder.h
│ │ │ ├── SDWebImageCoder.m
│ │ │ ├── SDWebImageCoderHelper.h
│ │ │ ├── SDWebImageCoderHelper.m
│ │ │ ├── SDWebImageCodersManager.h
│ │ │ ├── SDWebImageCodersManager.m
│ │ │ ├── SDWebImageCompat.h
│ │ │ ├── SDWebImageCompat.m
│ │ │ ├── SDWebImageDownloader.h
│ │ │ ├── SDWebImageDownloader.m
│ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ ├── SDWebImageDownloaderOperation.m
│ │ │ ├── SDWebImageFrame.h
│ │ │ ├── SDWebImageFrame.m
│ │ │ ├── SDWebImageGIFCoder.h
│ │ │ ├── SDWebImageGIFCoder.m
│ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ ├── SDWebImageImageIOCoder.m
│ │ │ ├── SDWebImageManager.h
│ │ │ ├── SDWebImageManager.m
│ │ │ ├── SDWebImageOperation.h
│ │ │ ├── SDWebImagePrefetcher.h
│ │ │ ├── SDWebImagePrefetcher.m
│ │ │ ├── SDWebImageTransition.h
│ │ │ ├── SDWebImageTransition.m
│ │ │ ├── UIButton+WebCache.h
│ │ │ ├── UIButton+WebCache.m
│ │ │ ├── UIImage+ForceDecode.h
│ │ │ ├── UIImage+ForceDecode.m
│ │ │ ├── UIImage+GIF.h
│ │ │ ├── UIImage+GIF.m
│ │ │ ├── UIImage+MultiFormat.h
│ │ │ ├── UIImage+MultiFormat.m
│ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ ├── UIImageView+HighlightedWebCache.m
│ │ │ ├── UIImageView+WebCache.h
│ │ │ ├── UIImageView+WebCache.m
│ │ │ ├── UIView+WebCache.h
│ │ │ ├── UIView+WebCache.m
│ │ │ ├── UIView+WebCacheOperation.h
│ │ │ └── UIView+WebCacheOperation.m
│ └── Target Support Files
│ │ ├── Alamofire
│ │ ├── Alamofire-dummy.m
│ │ ├── Alamofire-prefix.pch
│ │ ├── Alamofire-umbrella.h
│ │ ├── Alamofire.modulemap
│ │ └── Info.plist
│ │ ├── Bugle
│ │ ├── Bugle-dummy.m
│ │ ├── Bugle-prefix.pch
│ │ ├── Bugle-umbrella.h
│ │ ├── Bugle.modulemap
│ │ └── Info.plist
│ │ ├── Pods-Pokedex
│ │ ├── Info.plist
│ │ ├── Pods-Pokedex-acknowledgements.markdown
│ │ ├── Pods-Pokedex-acknowledgements.plist
│ │ ├── Pods-Pokedex-dummy.m
│ │ ├── Pods-Pokedex-frameworks.sh
│ │ ├── Pods-Pokedex-resources.sh
│ │ ├── Pods-Pokedex-umbrella.h
│ │ └── Pods-Pokedex.modulemap
│ │ └── SDWebImage
│ │ ├── Info.plist
│ │ ├── SDWebImage-dummy.m
│ │ ├── SDWebImage-prefix.pch
│ │ ├── SDWebImage-umbrella.h
│ │ └── SDWebImage.modulemap
├── Pokedex.xcodeproj
│ └── project.pbxproj
├── Pokedex.xcworkspace
│ └── contents.xcworkspacedata
└── Pokedex
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Contents.json
│ ├── black.colorset
│ │ └── Contents.json
│ ├── bluish.colorset
│ │ └── Contents.json
│ ├── booger.colorset
│ │ └── Contents.json
│ ├── brick.colorset
│ │ └── Contents.json
│ ├── coolGrey.colorset
│ │ └── Contents.json
│ ├── dullOrange.colorset
│ │ └── Contents.json
│ ├── dustyLavender.colorset
│ │ └── Contents.json
│ ├── frenchBlue.colorset
│ │ └── Contents.json
│ ├── lightEggplant.colorset
│ │ └── Contents.json
│ ├── logo.imageset
│ │ ├── Contents.json
│ │ ├── bitmap.png
│ │ ├── bitmap@2x.png
│ │ └── bitmap@3x.png
│ ├── maize.colorset
│ │ └── Contents.json
│ ├── purpleishBlue.colorset
│ │ └── Contents.json
│ ├── roundedbutton.imageset
│ │ ├── Contents.json
│ │ ├── rectangle2.png
│ │ ├── rectangle2@2x.png
│ │ └── rectangle2@3x.png
│ ├── slateGrey.colorset
│ │ └── Contents.json
│ ├── softBlue.colorset
│ │ └── Contents.json
│ ├── steelGrey.colorset
│ │ └── Contents.json
│ ├── textColor.colorset
│ │ └── Contents.json
│ ├── turtleGreen.colorset
│ │ └── Contents.json
│ ├── twilight.colorset
│ │ └── Contents.json
│ ├── vermillion.colorset
│ │ └── Contents.json
│ ├── white.colorset
│ │ └── Contents.json
│ └── windowsBlue.colorset
│ │ └── Contents.json
│ ├── Base.lproj
│ └── LaunchScreen.storyboard
│ ├── Common
│ ├── Controllers
│ │ └── DataTableViewController.swift
│ ├── Data
│ │ ├── AppDataSource.swift
│ │ ├── AppParser.swift
│ │ ├── DataSource.swift
│ │ └── Parser.swift
│ ├── Decorators
│ │ ├── AppCellDecorator.swift
│ │ └── CellDecorator.swift
│ ├── Extensions
│ │ ├── String+Ext.swift
│ │ ├── UIColor+Additions.swift
│ │ ├── UIView+Animations.swift
│ │ └── UIViewController+Positions.swift
│ ├── Navigation
│ │ └── UIViewController+Navigation.swift
│ └── ViewPresenter
│ │ ├── BaseView.swift
│ │ ├── BaseViewController.swift
│ │ └── BaseViewControllerIndicator.swift
│ ├── Data
│ ├── Local
│ │ ├── Managers
│ │ │ └── SessionManager.swift
│ │ └── Protocols
│ │ │ └── SessionManagerProtocol.swift
│ ├── LocelKeys.swift
│ └── Remote
│ │ ├── PokemonsParser.swift
│ │ └── PokemonsService.swift
│ ├── Decorators
│ └── SimplePokemonCellDecorator.swift
│ ├── Domain
│ ├── Pokemon.swift
│ ├── Session.swift
│ └── SimplePokemon.swift
│ ├── Info.plist
│ └── Presentation
│ ├── Pokemons
│ ├── Pokemons.storyboard
│ └── PokemonsTableViewController.swift
│ └── Welcome
│ ├── Welcome.storyboard
│ ├── WelcomeContract.swift
│ ├── WelcomePresenter.swift
│ └── WelcomeViewController.swift
├── PokedexP2
├── .gitignore
├── Podfile
├── Podfile.lock
├── Pods
│ ├── Alamofire
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── Source
│ │ │ ├── AFError.swift
│ │ │ ├── Alamofire.swift
│ │ │ ├── DispatchQueue+Alamofire.swift
│ │ │ ├── MultipartFormData.swift
│ │ │ ├── NetworkReachabilityManager.swift
│ │ │ ├── Notifications.swift
│ │ │ ├── ParameterEncoding.swift
│ │ │ ├── Request.swift
│ │ │ ├── Response.swift
│ │ │ ├── ResponseSerialization.swift
│ │ │ ├── Result.swift
│ │ │ ├── ServerTrustPolicy.swift
│ │ │ ├── SessionDelegate.swift
│ │ │ ├── SessionManager.swift
│ │ │ ├── TaskDelegate.swift
│ │ │ ├── Timeline.swift
│ │ │ └── Validation.swift
│ ├── Bugle
│ │ ├── Bugle
│ │ │ └── Sources
│ │ │ │ ├── Bugle+Ext.swift
│ │ │ │ ├── Bugle+Merge.swift
│ │ │ │ ├── Bugle.swift
│ │ │ │ ├── BuglePiece.swift
│ │ │ │ └── BugleType.swift
│ │ ├── LICENSE
│ │ └── README.md
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ └── project.pbxproj
│ ├── SDWebImage
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── SDWebImage
│ │ │ ├── NSButton+WebCache.h
│ │ │ ├── NSButton+WebCache.m
│ │ │ ├── NSData+ImageContentType.h
│ │ │ ├── NSData+ImageContentType.m
│ │ │ ├── NSImage+WebCache.h
│ │ │ ├── NSImage+WebCache.m
│ │ │ ├── SDAnimatedImageRep.h
│ │ │ ├── SDAnimatedImageRep.m
│ │ │ ├── SDImageCache.h
│ │ │ ├── SDImageCache.m
│ │ │ ├── SDImageCacheConfig.h
│ │ │ ├── SDImageCacheConfig.m
│ │ │ ├── SDWebImageCoder.h
│ │ │ ├── SDWebImageCoder.m
│ │ │ ├── SDWebImageCoderHelper.h
│ │ │ ├── SDWebImageCoderHelper.m
│ │ │ ├── SDWebImageCodersManager.h
│ │ │ ├── SDWebImageCodersManager.m
│ │ │ ├── SDWebImageCompat.h
│ │ │ ├── SDWebImageCompat.m
│ │ │ ├── SDWebImageDownloader.h
│ │ │ ├── SDWebImageDownloader.m
│ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ ├── SDWebImageDownloaderOperation.m
│ │ │ ├── SDWebImageFrame.h
│ │ │ ├── SDWebImageFrame.m
│ │ │ ├── SDWebImageGIFCoder.h
│ │ │ ├── SDWebImageGIFCoder.m
│ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ ├── SDWebImageImageIOCoder.m
│ │ │ ├── SDWebImageManager.h
│ │ │ ├── SDWebImageManager.m
│ │ │ ├── SDWebImageOperation.h
│ │ │ ├── SDWebImagePrefetcher.h
│ │ │ ├── SDWebImagePrefetcher.m
│ │ │ ├── SDWebImageTransition.h
│ │ │ ├── SDWebImageTransition.m
│ │ │ ├── UIButton+WebCache.h
│ │ │ ├── UIButton+WebCache.m
│ │ │ ├── UIImage+ForceDecode.h
│ │ │ ├── UIImage+ForceDecode.m
│ │ │ ├── UIImage+GIF.h
│ │ │ ├── UIImage+GIF.m
│ │ │ ├── UIImage+MultiFormat.h
│ │ │ ├── UIImage+MultiFormat.m
│ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ ├── UIImageView+HighlightedWebCache.m
│ │ │ ├── UIImageView+WebCache.h
│ │ │ ├── UIImageView+WebCache.m
│ │ │ ├── UIView+WebCache.h
│ │ │ ├── UIView+WebCache.m
│ │ │ ├── UIView+WebCacheOperation.h
│ │ │ └── UIView+WebCacheOperation.m
│ └── Target Support Files
│ │ ├── Alamofire
│ │ ├── Alamofire-dummy.m
│ │ ├── Alamofire-prefix.pch
│ │ ├── Alamofire-umbrella.h
│ │ ├── Alamofire.modulemap
│ │ └── Info.plist
│ │ ├── Bugle
│ │ ├── Bugle-dummy.m
│ │ ├── Bugle-prefix.pch
│ │ ├── Bugle-umbrella.h
│ │ ├── Bugle.modulemap
│ │ └── Info.plist
│ │ ├── Pods-Pokedex
│ │ ├── Info.plist
│ │ ├── Pods-Pokedex-acknowledgements.markdown
│ │ ├── Pods-Pokedex-acknowledgements.plist
│ │ ├── Pods-Pokedex-dummy.m
│ │ ├── Pods-Pokedex-frameworks.sh
│ │ ├── Pods-Pokedex-resources.sh
│ │ ├── Pods-Pokedex-umbrella.h
│ │ └── Pods-Pokedex.modulemap
│ │ └── SDWebImage
│ │ ├── Info.plist
│ │ ├── SDWebImage-dummy.m
│ │ ├── SDWebImage-prefix.pch
│ │ ├── SDWebImage-umbrella.h
│ │ └── SDWebImage.modulemap
├── Pokedex.xcodeproj
│ └── project.pbxproj
├── Pokedex.xcworkspace
│ └── contents.xcworkspacedata
└── Pokedex
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Contents.json
│ ├── black.colorset
│ │ └── Contents.json
│ ├── bluish.colorset
│ │ └── Contents.json
│ ├── booger.colorset
│ │ └── Contents.json
│ ├── brick.colorset
│ │ └── Contents.json
│ ├── coolGrey.colorset
│ │ └── Contents.json
│ ├── dullOrange.colorset
│ │ └── Contents.json
│ ├── dustyLavender.colorset
│ │ └── Contents.json
│ ├── frenchBlue.colorset
│ │ └── Contents.json
│ ├── lightEggplant.colorset
│ │ └── Contents.json
│ ├── logo.imageset
│ │ ├── Contents.json
│ │ ├── bitmap.png
│ │ ├── bitmap@2x.png
│ │ └── bitmap@3x.png
│ ├── maize.colorset
│ │ └── Contents.json
│ ├── purpleishBlue.colorset
│ │ └── Contents.json
│ ├── roundedbutton.imageset
│ │ ├── Contents.json
│ │ ├── rectangle2.png
│ │ ├── rectangle2@2x.png
│ │ └── rectangle2@3x.png
│ ├── slateGrey.colorset
│ │ └── Contents.json
│ ├── softBlue.colorset
│ │ └── Contents.json
│ ├── steelGrey.colorset
│ │ └── Contents.json
│ ├── textColor.colorset
│ │ └── Contents.json
│ ├── turtleGreen.colorset
│ │ └── Contents.json
│ ├── twilight.colorset
│ │ └── Contents.json
│ ├── vermillion.colorset
│ │ └── Contents.json
│ ├── white.colorset
│ │ └── Contents.json
│ └── windowsBlue.colorset
│ │ └── Contents.json
│ ├── Base.lproj
│ └── LaunchScreen.storyboard
│ ├── Common
│ ├── Controllers
│ │ └── DataTableViewController.swift
│ ├── Data
│ │ ├── AppDataSource.swift
│ │ ├── AppParser.swift
│ │ ├── DataSource.swift
│ │ └── Parser.swift
│ ├── Decorators
│ │ ├── AppCellDecorator.swift
│ │ └── CellDecorator.swift
│ ├── Extensions
│ │ ├── String+Ext.swift
│ │ ├── String+Formatter.swift
│ │ ├── UIColor+Additions.swift
│ │ ├── UIImageView+Ext.swift
│ │ ├── UIView+Animations.swift
│ │ └── UIViewController+Positions.swift
│ ├── Navigation
│ │ └── UIViewController+Navigation.swift
│ └── ViewPresenter
│ │ ├── BaseView.swift
│ │ ├── BaseViewController.swift
│ │ └── BaseViewControllerIndicator.swift
│ ├── Data
│ ├── Local
│ │ ├── LocelKeys.swift
│ │ ├── Managers
│ │ │ └── SessionManager.swift
│ │ └── Protocols
│ │ │ └── SessionManagerProtocol.swift
│ └── Remote
│ │ ├── PokemonsParser.swift
│ │ └── PokemonsService.swift
│ ├── Decorators
│ ├── PokemonCollectionCellDecorator.swift
│ └── SimplePokemonCellDecorator.swift
│ ├── Domain
│ ├── Pokemon.swift
│ ├── PokemonType.swift
│ ├── Session.swift
│ └── SimplePokemon.swift
│ ├── Info.plist
│ └── Presentation
│ ├── Pokemons
│ ├── Cell
│ │ ├── PokemonCollectionViewCell.swift
│ │ └── PokemonCollectionViewCell.xib
│ ├── Pokemons.storyboard
│ └── PokemonsViewController.swift
│ └── Welcome
│ ├── Welcome.storyboard
│ ├── WelcomeContract.swift
│ ├── WelcomePresenter.swift
│ └── WelcomeViewController.swift
├── PokedexP3
├── .gitignore
├── Podfile
├── Podfile.lock
├── Pods
│ ├── Alamofire
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── Source
│ │ │ ├── AFError.swift
│ │ │ ├── Alamofire.swift
│ │ │ ├── DispatchQueue+Alamofire.swift
│ │ │ ├── MultipartFormData.swift
│ │ │ ├── NetworkReachabilityManager.swift
│ │ │ ├── Notifications.swift
│ │ │ ├── ParameterEncoding.swift
│ │ │ ├── Request.swift
│ │ │ ├── Response.swift
│ │ │ ├── ResponseSerialization.swift
│ │ │ ├── Result.swift
│ │ │ ├── ServerTrustPolicy.swift
│ │ │ ├── SessionDelegate.swift
│ │ │ ├── SessionManager.swift
│ │ │ ├── TaskDelegate.swift
│ │ │ ├── Timeline.swift
│ │ │ └── Validation.swift
│ ├── Bugle
│ │ ├── Bugle
│ │ │ └── Sources
│ │ │ │ ├── Bugle+Ext.swift
│ │ │ │ ├── Bugle+Merge.swift
│ │ │ │ ├── Bugle.swift
│ │ │ │ ├── BuglePiece.swift
│ │ │ │ └── BugleType.swift
│ │ ├── LICENSE
│ │ └── README.md
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ └── project.pbxproj
│ ├── SDWebImage
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── SDWebImage
│ │ │ ├── NSButton+WebCache.h
│ │ │ ├── NSButton+WebCache.m
│ │ │ ├── NSData+ImageContentType.h
│ │ │ ├── NSData+ImageContentType.m
│ │ │ ├── NSImage+WebCache.h
│ │ │ ├── NSImage+WebCache.m
│ │ │ ├── SDAnimatedImageRep.h
│ │ │ ├── SDAnimatedImageRep.m
│ │ │ ├── SDImageCache.h
│ │ │ ├── SDImageCache.m
│ │ │ ├── SDImageCacheConfig.h
│ │ │ ├── SDImageCacheConfig.m
│ │ │ ├── SDWebImageCoder.h
│ │ │ ├── SDWebImageCoder.m
│ │ │ ├── SDWebImageCoderHelper.h
│ │ │ ├── SDWebImageCoderHelper.m
│ │ │ ├── SDWebImageCodersManager.h
│ │ │ ├── SDWebImageCodersManager.m
│ │ │ ├── SDWebImageCompat.h
│ │ │ ├── SDWebImageCompat.m
│ │ │ ├── SDWebImageDownloader.h
│ │ │ ├── SDWebImageDownloader.m
│ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ ├── SDWebImageDownloaderOperation.m
│ │ │ ├── SDWebImageFrame.h
│ │ │ ├── SDWebImageFrame.m
│ │ │ ├── SDWebImageGIFCoder.h
│ │ │ ├── SDWebImageGIFCoder.m
│ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ ├── SDWebImageImageIOCoder.m
│ │ │ ├── SDWebImageManager.h
│ │ │ ├── SDWebImageManager.m
│ │ │ ├── SDWebImageOperation.h
│ │ │ ├── SDWebImagePrefetcher.h
│ │ │ ├── SDWebImagePrefetcher.m
│ │ │ ├── SDWebImageTransition.h
│ │ │ ├── SDWebImageTransition.m
│ │ │ ├── UIButton+WebCache.h
│ │ │ ├── UIButton+WebCache.m
│ │ │ ├── UIImage+ForceDecode.h
│ │ │ ├── UIImage+ForceDecode.m
│ │ │ ├── UIImage+GIF.h
│ │ │ ├── UIImage+GIF.m
│ │ │ ├── UIImage+MultiFormat.h
│ │ │ ├── UIImage+MultiFormat.m
│ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ ├── UIImageView+HighlightedWebCache.m
│ │ │ ├── UIImageView+WebCache.h
│ │ │ ├── UIImageView+WebCache.m
│ │ │ ├── UIView+WebCache.h
│ │ │ ├── UIView+WebCache.m
│ │ │ ├── UIView+WebCacheOperation.h
│ │ │ └── UIView+WebCacheOperation.m
│ └── Target Support Files
│ │ ├── Alamofire
│ │ ├── Alamofire-dummy.m
│ │ ├── Alamofire-prefix.pch
│ │ ├── Alamofire-umbrella.h
│ │ ├── Alamofire.modulemap
│ │ └── Info.plist
│ │ ├── Bugle
│ │ ├── Bugle-dummy.m
│ │ ├── Bugle-prefix.pch
│ │ ├── Bugle-umbrella.h
│ │ ├── Bugle.modulemap
│ │ └── Info.plist
│ │ ├── Pods-Pokedex
│ │ ├── Info.plist
│ │ ├── Pods-Pokedex-acknowledgements.markdown
│ │ ├── Pods-Pokedex-acknowledgements.plist
│ │ ├── Pods-Pokedex-dummy.m
│ │ ├── Pods-Pokedex-frameworks.sh
│ │ ├── Pods-Pokedex-resources.sh
│ │ ├── Pods-Pokedex-umbrella.h
│ │ └── Pods-Pokedex.modulemap
│ │ └── SDWebImage
│ │ ├── Info.plist
│ │ ├── SDWebImage-dummy.m
│ │ ├── SDWebImage-prefix.pch
│ │ ├── SDWebImage-umbrella.h
│ │ └── SDWebImage.modulemap
├── Pokedex.xcodeproj
│ └── project.pbxproj
├── Pokedex.xcworkspace
│ └── contents.xcworkspacedata
└── Pokedex
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Contents.json
│ ├── black.colorset
│ │ └── Contents.json
│ ├── bluish.colorset
│ │ └── Contents.json
│ ├── booger.colorset
│ │ └── Contents.json
│ ├── brick.colorset
│ │ └── Contents.json
│ ├── coolGrey.colorset
│ │ └── Contents.json
│ ├── dullOrange.colorset
│ │ └── Contents.json
│ ├── dustyLavender.colorset
│ │ └── Contents.json
│ ├── frenchBlue.colorset
│ │ └── Contents.json
│ ├── lightEggplant.colorset
│ │ └── Contents.json
│ ├── maize.colorset
│ │ └── Contents.json
│ ├── pokedex.imageset
│ │ ├── Contents.json
│ │ ├── bitmap.png
│ │ ├── bitmap@2x.png
│ │ └── bitmap@3x.png
│ ├── purpleishBlue.colorset
│ │ └── Contents.json
│ ├── roundedbutton.imageset
│ │ ├── Contents.json
│ │ ├── rectangle2.png
│ │ ├── rectangle2@2x.png
│ │ └── rectangle2@3x.png
│ ├── slateGrey.colorset
│ │ └── Contents.json
│ ├── softBlue.colorset
│ │ └── Contents.json
│ ├── steelGrey.colorset
│ │ └── Contents.json
│ ├── textColor.colorset
│ │ └── Contents.json
│ ├── turtleGreen.colorset
│ │ └── Contents.json
│ ├── twilight.colorset
│ │ └── Contents.json
│ ├── vermillion.colorset
│ │ └── Contents.json
│ ├── white.colorset
│ │ └── Contents.json
│ └── windowsBlue.colorset
│ │ └── Contents.json
│ ├── Base.lproj
│ └── LaunchScreen.storyboard
│ ├── Common
│ ├── Controllers
│ │ └── DataTableViewController.swift
│ ├── Data
│ │ ├── AppDataSource.swift
│ │ ├── AppParser.swift
│ │ ├── DataSource.swift
│ │ └── Parser.swift
│ ├── Decorators
│ │ ├── AppCellDecorator.swift
│ │ └── CellDecorator.swift
│ ├── Extensions
│ │ ├── String+Ext.swift
│ │ ├── String+Formatter.swift
│ │ ├── UIColor+Additions.swift
│ │ ├── UIImageView+Ext.swift
│ │ ├── UIView+Animations.swift
│ │ ├── UIView+Style.swift
│ │ └── UIViewController+Positions.swift
│ ├── Navigation
│ │ └── UIViewController+Navigation.swift
│ └── ViewPresenter
│ │ ├── BaseView.swift
│ │ ├── BaseViewController.swift
│ │ └── BaseViewControllerIndicator.swift
│ ├── Data
│ ├── Local
│ │ ├── LocelKeys.swift
│ │ ├── Managers
│ │ │ └── SessionManager.swift
│ │ └── Protocols
│ │ │ └── SessionManagerProtocol.swift
│ └── Remote
│ │ ├── PokemonsParser.swift
│ │ └── PokemonsService.swift
│ ├── Decorators
│ ├── PokemonCollectionCellDecorator.swift
│ └── SimplePokemonCellDecorator.swift
│ ├── Domain
│ ├── Pokemon.swift
│ ├── PokemonType.swift
│ ├── Session.swift
│ └── SimplePokemon.swift
│ ├── Info.plist
│ └── Presentation
│ ├── Pokemons
│ ├── Cell
│ │ ├── PokemonCollectionViewCell.swift
│ │ └── PokemonCollectionViewCell.xib
│ ├── Pokemons.storyboard
│ ├── PokemonsContract.swift
│ └── PokemonsViewController.swift
│ └── Welcome
│ ├── Welcome.storyboard
│ ├── WelcomeContract.swift
│ ├── WelcomePresenter.swift
│ └── WelcomeViewController.swift
├── SimpleAPIClient
├── SimpleAPIClient.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── SimpleAPIClient
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Data
│ ├── AppDataSource.swift
│ ├── DataHelper.swift
│ └── DataSource.swift
│ ├── Decorators
│ ├── AppCellDecorator.swift
│ ├── CellDecorator.swift
│ └── SimplePokemonCellDecorator.swift
│ ├── Domain
│ ├── Pokemon.swift
│ └── SimplePokemon.swift
│ ├── Info.plist
│ └── Presentation
│ ├── DataTableViewController.swift
│ └── PokemonsTableViewController.swift
├── TableView
├── TableView.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── TableView
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Data
│ ├── DataHelper.swift
│ ├── DataSource.swift
│ └── MoviesDataSource.swift
│ ├── Decorators
│ ├── MovieCellDecorator.swift
│ └── SimpleMovieCellDecorator.swift
│ ├── Domain
│ ├── EmojiMovie.swift
│ ├── Movie.swift
│ └── SimpleMovie.swift
│ ├── Extensions
│ └── UIViewController+Ext.swift
│ ├── Info.plist
│ └── Movies
│ ├── DetailViewController.swift
│ └── MasterViewController.swift
└── UserDefaults
├── UserDefaults.xcodeproj
├── project.pbxproj
└── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
└── UserDefaults
├── AppDelegate.swift
├── Assets.xcassets
├── AppIcon.appiconset
│ └── Contents.json
└── Contents.json
├── Base.lproj
└── LaunchScreen.storyboard
├── Common
├── Controllers
│ └── DataTableViewController.swift
├── Data
│ ├── AppDataSource.swift
│ ├── AppParser.swift
│ ├── DataSource.swift
│ └── Parser.swift
├── Decorators
│ ├── AppCellDecorator.swift
│ └── CellDecorator.swift
├── Navigation
│ └── UIViewController+Navigation.swift
└── ViewPresenter
│ ├── BaseView.swift
│ ├── BaseViewController.swift
│ └── BaseViewControllerIndicator.swift
├── Data
└── Remote
│ ├── PokemonsParser.swift
│ └── PokemonsService.swift
├── Decorators
└── SimplePokemonCellDecorator.swift
├── Domain
├── Pokemon.swift
└── SimplePokemon.swift
├── Info.plist
└── Presentation
├── Dispatch
├── Dispatch.storyboard
└── DispatchViewController.swift
├── Login
├── Login.storyboard
├── LoginContract.swift
├── LoginPresenter.swift
└── LoginViewController.swift
└── Pokemons
├── Pokemons.storyboard
└── PokemonsTableViewController.swift
/Assets/PJ-02-00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-02-00.png
--------------------------------------------------------------------------------
/Assets/PJ-02-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-02-01.png
--------------------------------------------------------------------------------
/Assets/PJ-02-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-02-02.png
--------------------------------------------------------------------------------
/Assets/PJ-02-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-02-03.png
--------------------------------------------------------------------------------
/Assets/PJ-02-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-02-04.png
--------------------------------------------------------------------------------
/Assets/PJ-02-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-02-05.png
--------------------------------------------------------------------------------
/Assets/PJ-02-06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-02-06.png
--------------------------------------------------------------------------------
/Assets/PJ-03-00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-03-00.png
--------------------------------------------------------------------------------
/Assets/PJ-03-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-03-01.png
--------------------------------------------------------------------------------
/Assets/PJ-03-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-03-02.png
--------------------------------------------------------------------------------
/Assets/PJ-03-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-03-03.png
--------------------------------------------------------------------------------
/Assets/PJ-04-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-01.png
--------------------------------------------------------------------------------
/Assets/PJ-04-02-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-02-01.png
--------------------------------------------------------------------------------
/Assets/PJ-04-02-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-02-02.png
--------------------------------------------------------------------------------
/Assets/PJ-04-02-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-02-03.png
--------------------------------------------------------------------------------
/Assets/PJ-04-02-04.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-02-04.gif
--------------------------------------------------------------------------------
/Assets/PJ-04-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-02.png
--------------------------------------------------------------------------------
/Assets/PJ-04-03-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-03-01.png
--------------------------------------------------------------------------------
/Assets/PJ-04-03-02.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-03-02.gif
--------------------------------------------------------------------------------
/Assets/PJ-04-03-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-03-03.png
--------------------------------------------------------------------------------
/Assets/PJ-04-03-04.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-03-04.gif
--------------------------------------------------------------------------------
/Assets/PJ-04-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-03.png
--------------------------------------------------------------------------------
/Assets/PJ-04-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-04.png
--------------------------------------------------------------------------------
/Assets/PJ-04-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-05.png
--------------------------------------------------------------------------------
/Assets/PJ-04-06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-06.png
--------------------------------------------------------------------------------
/Assets/PJ-04-07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-07.png
--------------------------------------------------------------------------------
/Assets/PJ-04-08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-08.png
--------------------------------------------------------------------------------
/Assets/PJ-04-09.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-09.gif
--------------------------------------------------------------------------------
/Assets/PJ-04-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-10.png
--------------------------------------------------------------------------------
/Assets/PJ-04-11.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-04-11.gif
--------------------------------------------------------------------------------
/Assets/PJ-05-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-05-01.png
--------------------------------------------------------------------------------
/Assets/PJ-06-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-06-01.png
--------------------------------------------------------------------------------
/Assets/PJ-08-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-08-01.png
--------------------------------------------------------------------------------
/Assets/PJ-08-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-08-02.png
--------------------------------------------------------------------------------
/Assets/PJ-10-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-01.png
--------------------------------------------------------------------------------
/Assets/PJ-10-02-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-02-01.png
--------------------------------------------------------------------------------
/Assets/PJ-10-02-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-02-02.png
--------------------------------------------------------------------------------
/Assets/PJ-10-02-03.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-02-03.gif
--------------------------------------------------------------------------------
/Assets/PJ-10-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-02.png
--------------------------------------------------------------------------------
/Assets/PJ-10-03-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-03-01.png
--------------------------------------------------------------------------------
/Assets/PJ-10-03-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-03-02.png
--------------------------------------------------------------------------------
/Assets/PJ-10-03-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-03-03.png
--------------------------------------------------------------------------------
/Assets/PJ-10-03-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-03-04.png
--------------------------------------------------------------------------------
/Assets/PJ-10-03-05.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-03-05.gif
--------------------------------------------------------------------------------
/Assets/PJ-10-03-06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-03-06.png
--------------------------------------------------------------------------------
/Assets/PJ-10-03-07.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-03-07.gif
--------------------------------------------------------------------------------
/Assets/PJ-10-03-08.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-03-08.gif
--------------------------------------------------------------------------------
/Assets/PJ-10-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-03.png
--------------------------------------------------------------------------------
/Assets/PJ-10-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-04.png
--------------------------------------------------------------------------------
/Assets/PJ-10-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-05.png
--------------------------------------------------------------------------------
/Assets/PJ-10-06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-06.png
--------------------------------------------------------------------------------
/Assets/PJ-10-07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-07.png
--------------------------------------------------------------------------------
/Assets/PJ-10-08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-08.png
--------------------------------------------------------------------------------
/Assets/PJ-10-09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-09.png
--------------------------------------------------------------------------------
/Assets/PJ-10-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-10.png
--------------------------------------------------------------------------------
/Assets/PJ-10-11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-10-11.png
--------------------------------------------------------------------------------
/Assets/PJ-11-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-11-01.png
--------------------------------------------------------------------------------
/Assets/PJ-11-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-11-02.png
--------------------------------------------------------------------------------
/Assets/PJ-11-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-11-03.png
--------------------------------------------------------------------------------
/Assets/PJ-11-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-11-04.png
--------------------------------------------------------------------------------
/Assets/PJ-11-05.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Assets/PJ-11-05.gif
--------------------------------------------------------------------------------
/Playgrounds/P01-01-MapFilterReduce.playground/contents.xcplayground:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Playgrounds/P01-SwiftBasics.playground/contents.xcplayground:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Playgrounds/P02-Delegation.playground/contents.xcplayground:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Playgrounds/P03-Tables-and-Collections.playground/contents.xcplayground:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Projects/Alerts/Alerts.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/Alerts/Alerts.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/Alerts/Alerts/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/CocoaPods/CocoaPods.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/CocoaPods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/CocoaPods.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/CocoaPods.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/CocoaPods/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/CocoaPods/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'CocoaPods' do
5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
6 | use_frameworks!
7 |
8 | # Pods for CocoaPods
9 | pod 'Bugle'
10 |
11 | end
12 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Bugle (1.0.0)
3 |
4 | DEPENDENCIES:
5 | - Bugle
6 |
7 | SPEC REPOS:
8 | https://github.com/cocoapods/specs.git:
9 | - Bugle
10 |
11 | SPEC CHECKSUMS:
12 | Bugle: eb8a5916c84c17d476001088772d52f6ac6cf211
13 |
14 | PODFILE CHECKSUM: 803f89767317d28a709422b98759df78ffc39f73
15 |
16 | COCOAPODS: 1.5.3
17 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Bugle (1.0.0)
3 |
4 | DEPENDENCIES:
5 | - Bugle
6 |
7 | SPEC REPOS:
8 | https://github.com/cocoapods/specs.git:
9 | - Bugle
10 |
11 | SPEC CHECKSUMS:
12 | Bugle: eb8a5916c84c17d476001088772d52f6ac6cf211
13 |
14 | PODFILE CHECKSUM: 803f89767317d28a709422b98759df78ffc39f73
15 |
16 | COCOAPODS: 1.5.3
17 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/Pods/Target Support Files/Bugle/Bugle-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Bugle : NSObject
3 | @end
4 | @implementation PodsDummy_Bugle
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/Pods/Target Support Files/Bugle/Bugle-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/Pods/Target Support Files/Bugle/Bugle-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double BugleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char BugleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/Pods/Target Support Files/Bugle/Bugle.modulemap:
--------------------------------------------------------------------------------
1 | framework module Bugle {
2 | umbrella header "Bugle-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/Pods/Target Support Files/Pods-CocoaPods/Pods-CocoaPods-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_CocoaPods : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_CocoaPods
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/Pods/Target Support Files/Pods-CocoaPods/Pods-CocoaPods-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_CocoaPodsVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_CocoaPodsVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/CocoaPods/Pods/Target Support Files/Pods-CocoaPods/Pods-CocoaPods.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_CocoaPods {
2 | umbrella header "Pods-CocoaPods-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/Databases/MoviesList.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/Databases/MoviesList.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/Databases/MoviesList/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/Databases/MoviesList/MoviesList.xcdatamodeld/.xccurrentversion:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | _XCCurrentVersionName
6 | MoviesList.xcdatamodel
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/Delegation/Delegation.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/Delegation/Delegation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/Delegation/Delegation/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/Delegation/Delegation/SongLoaderResponder.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SoundLoader.swift
3 | // Delegation
4 | //
5 | // Created by Luis Burgos on 5/31/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | @objc protocol SongLoaderResponder {
12 | @objc optional func willBeginDownload()
13 | func didFinishDownload()
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/Dispatcher/Dispatcher.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/Dispatcher/Dispatcher.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/Dispatcher/Dispatcher/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/HolaMundo/HolaMundo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/HolaMundo/HolaMundo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/HolaMundo/HolaMundo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Common/Decorators/AppCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppCellDecorator.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AppCellDecorator: CellDecorator {
12 | func decorate(cell: UITableViewCell, using model: T?) {
13 | //IMPORTANT: Must override
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Common/Decorators/CellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol CellDecorator {
12 | associatedtype Model
13 | func decorate(cell: UITableViewCell, using model: Model?)
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Data/Local/LocalKeys.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocalKeys.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum LocalKeys: String {
12 | case loadingMessage = "loading-message"
13 | }
14 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Data/Local/Protocols/DispatchManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DispatchManagerProtocol.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DispatchManagerProtocol {
12 | func save(message: String?)
13 | func retrieve() -> String?
14 | func clear()
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/LoginForm/LoginForm/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Projects/Navigation/Navigation.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/Navigation/Navigation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/Navigation/Navigation/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/Navigation/Navigation/NestedDoll/CameraTableViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CameraTableViewController.swift
3 | // Navigation
4 | //
5 | // Created by Luis Burgos on 6/7/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CameraTableViewController: UITableViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | title = "Camera"
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/Projects/Navigation/Navigation/NestedDoll/GeneralTableViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GeneralTableViewController.swift
3 | // Navigation
4 | //
5 | // Created by Luis Burgos on 6/7/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class GeneralTableViewController: UITableViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | title = "General"
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/Projects/Navigation/Navigation/NestedDoll/SettingsTableViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SettingsTableViewController.swift
3 | // Navigation
4 | //
5 | // Created by Luis Burgos on 6/7/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class SettingsTableViewController: UITableViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | title = "Nested Settings"
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/Projects/OutletCatalog/OutletCatalog.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/OutletCatalog/OutletCatalog.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/OutletCatalog/OutletCatalog/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'Pokedex' do
5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
6 | use_frameworks!
7 |
8 | # Pods for Pokedex
9 |
10 | pod 'Alamofire', '~> 4.7'
11 | pod 'SDWebImage', '~>4.0'
12 | pod 'Bugle'
13 |
14 | end
15 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Alamofire/Alamofire-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Alamofire : NSObject
3 | @end
4 | @implementation PodsDummy_Alamofire
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double AlamofireVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Alamofire/Alamofire.modulemap:
--------------------------------------------------------------------------------
1 | framework module Alamofire {
2 | umbrella header "Alamofire-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Bugle/Bugle-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Bugle : NSObject
3 | @end
4 | @implementation PodsDummy_Bugle
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Bugle/Bugle-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Bugle/Bugle-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double BugleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char BugleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Bugle/Bugle.modulemap:
--------------------------------------------------------------------------------
1 | framework module Bugle {
2 | umbrella header "Bugle-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Pokedex : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Pokedex
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_PokedexVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_PokedexVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_Pokedex {
2 | umbrella header "Pods-Pokedex-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 | umbrella header "SDWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/black.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.000",
13 | "alpha" : "1.000",
14 | "red" : "0.000",
15 | "blue" : "0.000"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/bluish.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.576",
13 | "alpha" : "1.000",
14 | "red" : "0.145",
15 | "blue" : "0.796"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/booger.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.678",
13 | "alpha" : "1.000",
14 | "red" : "0.635",
15 | "blue" : "0.243"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/brick.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.216",
13 | "alpha" : "1.000",
14 | "red" : "0.667",
15 | "blue" : "0.176"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/coolGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.627",
13 | "alpha" : "1.000",
14 | "red" : "0.627",
15 | "blue" : "0.643"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/dullOrange.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.478",
13 | "alpha" : "1.000",
14 | "red" : "0.875",
15 | "blue" : "0.247"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/dustyLavender.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.643",
13 | "alpha" : "1.000",
14 | "red" : "0.729",
15 | "blue" : "0.737"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/frenchBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.357",
13 | "alpha" : "1.000",
14 | "red" : "0.231",
15 | "blue" : "0.655"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/lightEggplant.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.255",
13 | "alpha" : "1.000",
14 | "red" : "0.545",
15 | "blue" : "0.573"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap.png
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap@2x.png
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap@3x.png
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/maize.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.788",
13 | "alpha" : "1.000",
14 | "red" : "0.941",
15 | "blue" : "0.314"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/purpleishBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.243",
13 | "alpha" : "1.000",
14 | "red" : "0.357",
15 | "blue" : "0.933"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/slateGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.357",
13 | "alpha" : "1.000",
14 | "red" : "0.341",
15 | "blue" : "0.384"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/softBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.525",
13 | "alpha" : "1.000",
14 | "red" : "0.392",
15 | "blue" : "0.906"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/steelGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.529",
13 | "alpha" : "1.000",
14 | "red" : "0.518",
15 | "blue" : "0.549"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/textColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "1.000",
13 | "alpha" : "1.000",
14 | "red" : "1.000",
15 | "blue" : "1.000"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/turtleGreen.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.745",
13 | "alpha" : "1.000",
14 | "red" : "0.506",
15 | "blue" : "0.345"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/twilight.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.314",
13 | "alpha" : "1.000",
14 | "red" : "0.380",
15 | "blue" : "0.537"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/vermillion.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.157",
13 | "alpha" : "1.000",
14 | "red" : "0.859",
15 | "blue" : "0.067"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/white.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.937",
13 | "alpha" : "1.000",
14 | "red" : "0.937",
15 | "blue" : "0.937"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Assets.xcassets/windowsBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.612",
13 | "alpha" : "1.000",
14 | "red" : "0.306",
15 | "blue" : "0.800"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Data/Local/LocelKeys.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocelKeys.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum LocalKeys: String {
12 | case loggedIn = "logged-in"
13 | case userName = "username"
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Data/Local/Protocols/SessionManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SessionManagerProtocol.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol SessionManagerProtocol {
12 | func save(session: Session?)
13 | func retrieve() -> Session
14 | func clear()
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Projects/Pokedex/Pokedex/Domain/Session.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Session.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct Session {
12 | let loggedIn: Bool
13 | let userName: String
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'Pokedex' do
5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
6 | use_frameworks!
7 |
8 | # Pods for Pokedex
9 |
10 | pod 'Alamofire', '~> 4.7'
11 | pod 'SDWebImage', '~>4.0'
12 | pod 'Bugle'
13 |
14 | end
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Alamofire/Alamofire-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Alamofire : NSObject
3 | @end
4 | @implementation PodsDummy_Alamofire
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double AlamofireVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Alamofire/Alamofire.modulemap:
--------------------------------------------------------------------------------
1 | framework module Alamofire {
2 | umbrella header "Alamofire-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Bugle/Bugle-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Bugle : NSObject
3 | @end
4 | @implementation PodsDummy_Bugle
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Bugle/Bugle-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Bugle/Bugle-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double BugleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char BugleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Bugle/Bugle.modulemap:
--------------------------------------------------------------------------------
1 | framework module Bugle {
2 | umbrella header "Bugle-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Pokedex : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Pokedex
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_PokedexVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_PokedexVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_Pokedex {
2 | umbrella header "Pods-Pokedex-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 | umbrella header "SDWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/black.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.000",
13 | "alpha" : "1.000",
14 | "red" : "0.000",
15 | "blue" : "0.000"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/bluish.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.576",
13 | "alpha" : "1.000",
14 | "red" : "0.145",
15 | "blue" : "0.796"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/booger.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.678",
13 | "alpha" : "1.000",
14 | "red" : "0.635",
15 | "blue" : "0.243"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/brick.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.216",
13 | "alpha" : "1.000",
14 | "red" : "0.667",
15 | "blue" : "0.176"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/coolGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.627",
13 | "alpha" : "1.000",
14 | "red" : "0.627",
15 | "blue" : "0.643"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/dullOrange.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.478",
13 | "alpha" : "1.000",
14 | "red" : "0.875",
15 | "blue" : "0.247"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/dustyLavender.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.643",
13 | "alpha" : "1.000",
14 | "red" : "0.729",
15 | "blue" : "0.737"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/frenchBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.357",
13 | "alpha" : "1.000",
14 | "red" : "0.231",
15 | "blue" : "0.655"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/lightEggplant.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.255",
13 | "alpha" : "1.000",
14 | "red" : "0.545",
15 | "blue" : "0.573"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/maize.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.788",
13 | "alpha" : "1.000",
14 | "red" : "0.941",
15 | "blue" : "0.314"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/pokedex.imageset/bitmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP2/Pokedex/Assets.xcassets/pokedex.imageset/bitmap.png
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP2/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@2x.png
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP2/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@3x.png
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/purpleishBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.243",
13 | "alpha" : "1.000",
14 | "red" : "0.357",
15 | "blue" : "0.933"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/softBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.525",
13 | "alpha" : "1.000",
14 | "red" : "0.392",
15 | "blue" : "0.906"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/twilight.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.314",
13 | "alpha" : "1.000",
14 | "red" : "0.380",
15 | "blue" : "0.537"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Assets.xcassets/white.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.937",
13 | "alpha" : "1.000",
14 | "red" : "0.937",
15 | "blue" : "0.937"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Common/Extensions/String+Formatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String+Formatter.swift
3 | // Pokedex
4 | //
5 | // Created by Luis Burgos on 7/13/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension String {
12 | func toNumberIdentifier() -> String {
13 | return String(format: "#%@", self)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Data/Local/LocelKeys.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocelKeys.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum LocalKeys: String {
12 | case loggedIn = "logged-in"
13 | case userName = "username"
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Data/Local/Protocols/SessionManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SessionManagerProtocol.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol SessionManagerProtocol {
12 | func save(session: Session?)
13 | func retrieve() -> Session
14 | func clear()
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Projects/PokedexP2/Pokedex/Domain/Session.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Session.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct Session {
12 | let loggedIn: Bool
13 | let userName: String
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'Pokedex' do
5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
6 | use_frameworks!
7 |
8 | # Pods for Pokedex
9 |
10 | pod 'Alamofire', '~> 4.7'
11 | pod 'SDWebImage', '~>4.0'
12 | pod 'Bugle'
13 |
14 | end
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Alamofire/Alamofire-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Alamofire : NSObject
3 | @end
4 | @implementation PodsDummy_Alamofire
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double AlamofireVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Alamofire/Alamofire.modulemap:
--------------------------------------------------------------------------------
1 | framework module Alamofire {
2 | umbrella header "Alamofire-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Bugle/Bugle-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Bugle : NSObject
3 | @end
4 | @implementation PodsDummy_Bugle
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Bugle/Bugle-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Bugle/Bugle-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double BugleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char BugleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Bugle/Bugle.modulemap:
--------------------------------------------------------------------------------
1 | framework module Bugle {
2 | umbrella header "Bugle-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Pokedex : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Pokedex
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_PokedexVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_PokedexVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_Pokedex {
2 | umbrella header "Pods-Pokedex-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 | umbrella header "SDWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/black.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.000",
13 | "alpha" : "1.000",
14 | "red" : "0.000",
15 | "blue" : "0.000"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/bluish.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.576",
13 | "alpha" : "1.000",
14 | "red" : "0.145",
15 | "blue" : "0.796"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/booger.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.678",
13 | "alpha" : "1.000",
14 | "red" : "0.635",
15 | "blue" : "0.243"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/brick.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.216",
13 | "alpha" : "1.000",
14 | "red" : "0.667",
15 | "blue" : "0.176"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/coolGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.627",
13 | "alpha" : "1.000",
14 | "red" : "0.627",
15 | "blue" : "0.643"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/filter.imageset/ifFilter1608702.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP3/Pokedex/Assets.xcassets/filter.imageset/ifFilter1608702.png
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/filter.imageset/ifFilter1608702@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP3/Pokedex/Assets.xcassets/filter.imageset/ifFilter1608702@2x.png
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/filter.imageset/ifFilter1608702@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP3/Pokedex/Assets.xcassets/filter.imageset/ifFilter1608702@3x.png
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/maize.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.788",
13 | "alpha" : "1.000",
14 | "red" : "0.941",
15 | "blue" : "0.314"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap.png
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@2x.png
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@3x.png
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Projects/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/softBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.525",
13 | "alpha" : "1.000",
14 | "red" : "0.392",
15 | "blue" : "0.906"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/twilight.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.314",
13 | "alpha" : "1.000",
14 | "red" : "0.380",
15 | "blue" : "0.537"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Assets.xcassets/white.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.937",
13 | "alpha" : "1.000",
14 | "red" : "0.937",
15 | "blue" : "0.937"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Common/Extensions/String+Formatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String+Formatter.swift
3 | // Pokedex
4 | //
5 | // Created by Luis Burgos on 7/13/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension String {
12 | func toNumberIdentifier() -> String {
13 | return String(format: "#%@", self)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Data/Local/LocelKeys.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocelKeys.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum LocalKeys: String {
12 | case loggedIn = "logged-in"
13 | case userName = "username"
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Data/Local/Protocols/SessionManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SessionManagerProtocol.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol SessionManagerProtocol {
12 | func save(session: Session?)
13 | func retrieve() -> Session
14 | func clear()
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Projects/PokedexP3/Pokedex/Domain/Session.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Session.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct Session {
12 | let loggedIn: Bool
13 | let userName: String
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/SimpleAPIClient/SimpleAPIClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/SimpleAPIClient/SimpleAPIClient.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/SimpleAPIClient/SimpleAPIClient/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/SimpleAPIClient/SimpleAPIClient/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/SimpleAPIClient/SimpleAPIClient/Decorators/AppCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppCellDecorator.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AppCellDecorator: CellDecorator {
12 | func decorate(cell: UITableViewCell, using model: T?) {
13 | //IMPORTANT: Must override
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/SimpleAPIClient/SimpleAPIClient/Decorators/CellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol CellDecorator {
12 | associatedtype Model
13 | func decorate(cell: UITableViewCell, using model: Model?)
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/SimpleAPIClient/SimpleAPIClient/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Projects/TableView/TableView.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/TableView/TableView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/TableView/TableView/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/TableView/TableView/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/TableView/TableView/Decorators/MovieCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | protocol MovieCellDecorator {
13 | func decorate(cell: UITableViewCell, using model: Movie?)
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/TableView/TableView/Domain/Movie.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Movie {
12 | var id: String { get }
13 | var name: String { get }
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/TableView/TableView/Domain/SimpleMovie.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SimpleMovie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct SimpleMovie: Movie {
12 | var id: String
13 | var name: String
14 |
15 | init(id: String, name: String) {
16 | self.id = id
17 | self.name = name
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Common/Decorators/AppCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppCellDecorator.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AppCellDecorator: CellDecorator {
12 | func decorate(cell: UITableViewCell, using model: T?) {
13 | //IMPORTANT: Must override
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Common/Decorators/CellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol CellDecorator {
12 | associatedtype Model
13 | func decorate(cell: UITableViewCell, using model: Model?)
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Data/Local/LocelKeys.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocelKeys.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum LocalKeys: String {
12 | case loadingMessage = "loading-message"
13 | case loggedIn = "logged-in"
14 | case userName = "username"
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Data/Local/Protocols/DispatchManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DispatchManagerProtocol.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DispatchManagerProtocol {
12 | func save(message: String?)
13 | func retrieve() -> String?
14 | func clear()
15 | }
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Data/Local/Protocols/SessionManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SessionManagerProtocol.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol SessionManagerProtocol {
12 | func save(session: Session?)
13 | func retrieve() -> Session
14 | func clear()
15 | }
16 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Projects/UserDefaults/UserDefaults/Domain/Session.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Session.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct Session {
12 | let loggedIn: Bool
13 | let userName: String
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/.gitkeep
--------------------------------------------------------------------------------
/Starters/Alerts/Alerts.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/Alerts/Alerts.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/Alerts/Alerts/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/CocoaPods/CocoaPods.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/CocoaPods/CocoaPods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/CocoaPods/CocoaPods/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/Delegation/Delegation.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/Delegation/Delegation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/Delegation/Delegation/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/Delegation/Delegation/SongLoaderResponder.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SoundLoader.swift
3 | // Delegation
4 | //
5 | // Created by Luis Burgos on 5/31/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol SongLoaderResponder {
12 | func willBeginDownload()
13 | func didFinishDownload()
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm/Common/Decorators/AppCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppCellDecorator.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AppCellDecorator: CellDecorator {
12 | func decorate(cell: UITableViewCell, using model: T?) {
13 | //IMPORTANT: Must override
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm/Common/Decorators/CellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol CellDecorator {
12 | associatedtype Model
13 | func decorate(cell: UITableViewCell, using model: Model?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Starters/LoginForm/LoginForm/Presentation/Login/LoginViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoginViewController.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class LoginViewController {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm/Common/Decorators/AppCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppCellDecorator.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AppCellDecorator: CellDecorator {
12 | func decorate(cell: UITableViewCell, using model: T?) {
13 | //IMPORTANT: Must override
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm/Common/Decorators/CellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol CellDecorator {
12 | associatedtype Model
13 | func decorate(cell: UITableViewCell, using model: Model?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Starters/LoginFormP2/LoginForm/Presentation/Login/LoginContract.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoginContract.swift
3 | // YellowPod
4 | //
5 | // Created by Luis Burgos on 12/13/17.
6 | // Copyright © 2017 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol LoginView: BaseView {
12 | func showMainScreen()
13 | }
14 |
15 | protocol LoginViewPresenter {
16 | init(view: LoginView)
17 | func login(_ name: String?, passsword: String?)
18 | }
19 |
--------------------------------------------------------------------------------
/Starters/LoginFormP3/LoginForm.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/LoginFormP3/LoginForm.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/LoginFormP3/LoginForm/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/LoginFormP3/LoginForm/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/LoginFormP3/LoginForm/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/LoginFormP3/LoginForm/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/LoginFormP3/LoginForm/Common/Decorators/AppCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppCellDecorator.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AppCellDecorator: CellDecorator {
12 | func decorate(cell: UITableViewCell, using model: T?) {
13 | //IMPORTANT: Must override
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/LoginFormP3/LoginForm/Common/Decorators/CellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol CellDecorator {
12 | associatedtype Model
13 | func decorate(cell: UITableViewCell, using model: Model?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/LoginFormP3/LoginForm/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Starters/NavigationP1/Navigation.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/NavigationP1/Navigation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/NavigationP1/Navigation/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/NavigationP2/Navigation.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/NavigationP2/Navigation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/NavigationP2/Navigation/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/NavigationP2/Navigation/NestedDoll/CameraTableViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CameraTableViewController.swift
3 | // Navigation
4 | //
5 | // Created by Luis Burgos on 6/7/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CameraTableViewController: UITableViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | title = "Camera"
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/Starters/NavigationP2/Navigation/NestedDoll/GeneralTableViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GeneralTableViewController.swift
3 | // Navigation
4 | //
5 | // Created by Luis Burgos on 6/7/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class GeneralTableViewController: UITableViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | title = "General"
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'Pokedex' do
5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
6 | use_frameworks!
7 |
8 | # Pods for Pokedex
9 |
10 | pod 'Alamofire', '~> 4.7'
11 | pod 'SDWebImage', '~>4.0'
12 | pod 'Bugle'
13 |
14 | end
15 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Alamofire/Alamofire-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Alamofire : NSObject
3 | @end
4 | @implementation PodsDummy_Alamofire
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double AlamofireVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Alamofire/Alamofire.modulemap:
--------------------------------------------------------------------------------
1 | framework module Alamofire {
2 | umbrella header "Alamofire-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Bugle/Bugle-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Bugle : NSObject
3 | @end
4 | @implementation PodsDummy_Bugle
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Bugle/Bugle-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Bugle/Bugle-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double BugleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char BugleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Bugle/Bugle.modulemap:
--------------------------------------------------------------------------------
1 | framework module Bugle {
2 | umbrella header "Bugle-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Pokedex : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Pokedex
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_PokedexVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_PokedexVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_Pokedex {
2 | umbrella header "Pods-Pokedex-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 | umbrella header "SDWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/black.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.000",
13 | "alpha" : "1.000",
14 | "red" : "0.000",
15 | "blue" : "0.000"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/bluish.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.576",
13 | "alpha" : "1.000",
14 | "red" : "0.145",
15 | "blue" : "0.796"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/booger.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.678",
13 | "alpha" : "1.000",
14 | "red" : "0.635",
15 | "blue" : "0.243"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/brick.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.216",
13 | "alpha" : "1.000",
14 | "red" : "0.667",
15 | "blue" : "0.176"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/coolGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.627",
13 | "alpha" : "1.000",
14 | "red" : "0.627",
15 | "blue" : "0.643"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/dullOrange.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.478",
13 | "alpha" : "1.000",
14 | "red" : "0.875",
15 | "blue" : "0.247"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/frenchBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.357",
13 | "alpha" : "1.000",
14 | "red" : "0.231",
15 | "blue" : "0.655"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap.png
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap@2x.png
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/Pokedex/Pokedex/Assets.xcassets/logo.imageset/bitmap@3x.png
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/maize.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.788",
13 | "alpha" : "1.000",
14 | "red" : "0.941",
15 | "blue" : "0.314"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/Pokedex/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/slateGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.357",
13 | "alpha" : "1.000",
14 | "red" : "0.341",
15 | "blue" : "0.384"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/softBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.525",
13 | "alpha" : "1.000",
14 | "red" : "0.392",
15 | "blue" : "0.906"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/steelGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.529",
13 | "alpha" : "1.000",
14 | "red" : "0.518",
15 | "blue" : "0.549"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/textColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "1.000",
13 | "alpha" : "1.000",
14 | "red" : "1.000",
15 | "blue" : "1.000"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/twilight.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.314",
13 | "alpha" : "1.000",
14 | "red" : "0.380",
15 | "blue" : "0.537"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/vermillion.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.157",
13 | "alpha" : "1.000",
14 | "red" : "0.859",
15 | "blue" : "0.067"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Assets.xcassets/white.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.937",
13 | "alpha" : "1.000",
14 | "red" : "0.937",
15 | "blue" : "0.937"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Common/Decorators/AppCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppCellDecorator.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AppCellDecorator: CellDecorator {
12 | func decorate(cell: UITableViewCell, using model: T?) {
13 | //IMPORTANT: Must override
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Common/Decorators/CellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol CellDecorator {
12 | associatedtype Model
13 | func decorate(cell: UITableViewCell, using model: Model?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Data/Local/Protocols/SessionManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SessionManagerProtocol.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol SessionManagerProtocol {
12 | func save(session: Session?)
13 | func retrieve() -> Session
14 | func clear()
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Data/LocelKeys.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocelKeys.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum LocalKeys: String {
12 | case loggedIn = "logged-in"
13 | case userName = "username"
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Starters/Pokedex/Pokedex/Domain/Session.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Session.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct Session {
12 | let loggedIn: Bool
13 | let userName: String
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'Pokedex' do
5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
6 | use_frameworks!
7 |
8 | # Pods for Pokedex
9 |
10 | pod 'Alamofire', '~> 4.7'
11 | pod 'SDWebImage', '~>4.0'
12 | pod 'Bugle'
13 |
14 | end
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Alamofire/Alamofire-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Alamofire : NSObject
3 | @end
4 | @implementation PodsDummy_Alamofire
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double AlamofireVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Alamofire/Alamofire.modulemap:
--------------------------------------------------------------------------------
1 | framework module Alamofire {
2 | umbrella header "Alamofire-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Bugle/Bugle-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Bugle : NSObject
3 | @end
4 | @implementation PodsDummy_Bugle
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Bugle/Bugle-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Bugle/Bugle-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double BugleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char BugleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Bugle/Bugle.modulemap:
--------------------------------------------------------------------------------
1 | framework module Bugle {
2 | umbrella header "Bugle-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Pokedex : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Pokedex
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_PokedexVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_PokedexVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_Pokedex {
2 | umbrella header "Pods-Pokedex-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 | umbrella header "SDWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/black.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.000",
13 | "alpha" : "1.000",
14 | "red" : "0.000",
15 | "blue" : "0.000"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/bluish.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.576",
13 | "alpha" : "1.000",
14 | "red" : "0.145",
15 | "blue" : "0.796"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/booger.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.678",
13 | "alpha" : "1.000",
14 | "red" : "0.635",
15 | "blue" : "0.243"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/brick.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.216",
13 | "alpha" : "1.000",
14 | "red" : "0.667",
15 | "blue" : "0.176"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/coolGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.627",
13 | "alpha" : "1.000",
14 | "red" : "0.627",
15 | "blue" : "0.643"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/logo.imageset/bitmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP2/Pokedex/Assets.xcassets/logo.imageset/bitmap.png
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/logo.imageset/bitmap@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP2/Pokedex/Assets.xcassets/logo.imageset/bitmap@2x.png
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/logo.imageset/bitmap@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP2/Pokedex/Assets.xcassets/logo.imageset/bitmap@3x.png
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/maize.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.788",
13 | "alpha" : "1.000",
14 | "red" : "0.941",
15 | "blue" : "0.314"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP2/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/softBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.525",
13 | "alpha" : "1.000",
14 | "red" : "0.392",
15 | "blue" : "0.906"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/twilight.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.314",
13 | "alpha" : "1.000",
14 | "red" : "0.380",
15 | "blue" : "0.537"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Assets.xcassets/white.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.937",
13 | "alpha" : "1.000",
14 | "red" : "0.937",
15 | "blue" : "0.937"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Common/Extensions/String+Formatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String+Formatter.swift
3 | // Pokedex
4 | //
5 | // Created by Luis Burgos on 7/13/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension String {
12 | func toNumberIdentifier() -> String {
13 | return String(format: "#%@", self)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Data/Local/LocelKeys.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocelKeys.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum LocalKeys: String {
12 | case loggedIn = "logged-in"
13 | case userName = "username"
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Data/Local/Protocols/SessionManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SessionManagerProtocol.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol SessionManagerProtocol {
12 | func save(session: Session?)
13 | func retrieve() -> Session
14 | func clear()
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Starters/PokedexP2/Pokedex/Domain/Session.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Session.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct Session {
12 | let loggedIn: Bool
13 | let userName: String
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'Pokedex' do
5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
6 | use_frameworks!
7 |
8 | # Pods for Pokedex
9 |
10 | pod 'Alamofire', '~> 4.7'
11 | pod 'SDWebImage', '~>4.0'
12 | pod 'Bugle'
13 |
14 | end
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Alamofire/Alamofire-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Alamofire : NSObject
3 | @end
4 | @implementation PodsDummy_Alamofire
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double AlamofireVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Alamofire/Alamofire.modulemap:
--------------------------------------------------------------------------------
1 | framework module Alamofire {
2 | umbrella header "Alamofire-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Bugle/Bugle-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Bugle : NSObject
3 | @end
4 | @implementation PodsDummy_Bugle
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Bugle/Bugle-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Bugle/Bugle-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double BugleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char BugleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Bugle/Bugle.modulemap:
--------------------------------------------------------------------------------
1 | framework module Bugle {
2 | umbrella header "Bugle-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Pokedex : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Pokedex
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_PokedexVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_PokedexVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/Pods-Pokedex/Pods-Pokedex.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_Pokedex {
2 | umbrella header "Pods-Pokedex-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 | umbrella header "SDWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/black.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.000",
13 | "alpha" : "1.000",
14 | "red" : "0.000",
15 | "blue" : "0.000"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/bluish.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.576",
13 | "alpha" : "1.000",
14 | "red" : "0.145",
15 | "blue" : "0.796"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/booger.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.678",
13 | "alpha" : "1.000",
14 | "red" : "0.635",
15 | "blue" : "0.243"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/brick.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.216",
13 | "alpha" : "1.000",
14 | "red" : "0.667",
15 | "blue" : "0.176"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/coolGrey.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.627",
13 | "alpha" : "1.000",
14 | "red" : "0.627",
15 | "blue" : "0.643"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/maize.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.788",
13 | "alpha" : "1.000",
14 | "red" : "0.941",
15 | "blue" : "0.314"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap.png
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@2x.png
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP3/Pokedex/Assets.xcassets/pokedex.imageset/bitmap@3x.png
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2.png
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@2x.png
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yellowme/ios-course/4a3cc492b1cb9f67b9ee1429591c8625f787324d/Starters/PokedexP3/Pokedex/Assets.xcassets/roundedbutton.imageset/rectangle2@3x.png
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/softBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.525",
13 | "alpha" : "1.000",
14 | "red" : "0.392",
15 | "blue" : "0.906"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/twilight.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.314",
13 | "alpha" : "1.000",
14 | "red" : "0.380",
15 | "blue" : "0.537"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Assets.xcassets/white.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "colors" : [
7 | {
8 | "idiom" : "universal",
9 | "color" : {
10 | "color-space" : "srgb",
11 | "components" : {
12 | "green" : "0.937",
13 | "alpha" : "1.000",
14 | "red" : "0.937",
15 | "blue" : "0.937"
16 | }
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Common/Extensions/String+Formatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String+Formatter.swift
3 | // Pokedex
4 | //
5 | // Created by Luis Burgos on 7/13/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension String {
12 | func toNumberIdentifier() -> String {
13 | return String(format: "#%@", self)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Data/Local/LocelKeys.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocelKeys.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum LocalKeys: String {
12 | case loggedIn = "logged-in"
13 | case userName = "username"
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Data/Local/Protocols/SessionManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SessionManagerProtocol.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol SessionManagerProtocol {
12 | func save(session: Session?)
13 | func retrieve() -> Session
14 | func clear()
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------
/Starters/PokedexP3/Pokedex/Domain/Session.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Session.swift
3 | // UserDefaults
4 | //
5 | // Created by Luis Burgos on 6/30/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct Session {
12 | let loggedIn: Bool
13 | let userName: String
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/SimpleAPIClient/SimpleAPIClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/SimpleAPIClient/SimpleAPIClient.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/SimpleAPIClient/SimpleAPIClient/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/SimpleAPIClient/SimpleAPIClient/Data/DataHelper.swift:
--------------------------------------------------------------------------------
1 |
2 | //
3 | // File.swift
4 | // TableView
5 | //
6 | // Created by Luis Burgos on 6/1/18.
7 | // Copyright © 2018 Yellowme. All rights reserved.
8 | //
9 |
10 | import Foundation
11 |
12 | class DataHelper {
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/SimpleAPIClient/SimpleAPIClient/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/SimpleAPIClient/SimpleAPIClient/Decorators/AppCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppCellDecorator.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AppCellDecorator: CellDecorator {
12 | func decorate(cell: UITableViewCell, using model: T?) {
13 | //IMPORTANT: Must override
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/SimpleAPIClient/SimpleAPIClient/Decorators/CellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol CellDecorator {
12 | associatedtype Model
13 | func decorate(cell: UITableViewCell, using model: Model?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/SimpleAPIClient/SimpleAPIClient/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/Starters/SimpleAPIClient/SimpleAPIClient/Domain/SimplePokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SimpleMovie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct SimplePokemon: Pokemon {
12 | let name: String?
13 |
14 | init(name: String) {
15 | self.name = name
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Starters/TableView/TableView.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/TableView/TableView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/TableView/TableView/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/TableView/TableView/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/TableView/TableView/Decorators/MovieCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | protocol MovieCellDecorator {
13 | func decorate(cell: UITableViewCell, using movie: Movie?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/TableView/TableView/Domain/Movie.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Movie {
12 | var id: String { get }
13 | var name: String { get }
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/TableView/TableView/Domain/SimpleMovie.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SimpleMovie.swift
3 | // TableView
4 | //
5 | // Created by Luis Burgos on 6/2/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class SimpleMovie: Movie {
12 | var id: String
13 | var name: String
14 |
15 | init(id: String, name: String) {
16 | self.id = id
17 | self.name = name
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults/Common/Data/AppParser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppParser.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class AppParser: Parser {
12 | func parse(_ data: Data) -> Model? {
13 | // Override and parse the concrete model
14 | return nil
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults/Common/Data/DataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataSource.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol DataSource {
12 | associatedtype Model
13 | var numberOfSections: Int { get }
14 | func numberOfRowsInSection(section: Int) -> Int
15 | func modelAt(indexPath: IndexPath) -> Model?
16 | }
17 |
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults/Common/Data/Parser.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Parser.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Parser {
12 | associatedtype ResponseModel
13 | func parse(_ data: Data) -> ResponseModel?
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults/Common/Decorators/AppCellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppCellDecorator.swift
3 | // SimpleAPIClient
4 | //
5 | // Created by Luis Burgos on 6/8/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class AppCellDecorator: CellDecorator {
12 | func decorate(cell: UITableViewCell, using model: T?) {
13 | //IMPORTANT: Must override
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults/Common/Decorators/CellDecorator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MovieCellDecorator.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol CellDecorator {
12 | associatedtype Model
13 | func decorate(cell: UITableViewCell, using model: Model?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults/Common/ViewPresenter/BaseView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BaseView.swift
3 | // LoginForm
4 | //
5 | // Created by Luis Burgos on 6/15/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | protocol BaseView: class {
12 | func setProgress(to isLoading: Bool, with alpha: CGFloat?, overlay: UIColor?)
13 | func display(_ message: String?)
14 | }
15 |
--------------------------------------------------------------------------------
/Starters/UserDefaults/UserDefaults/Domain/Pokemon.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Movie.swift
3 | // TableView
4 | //
5 | // Created by Erick A. Montañez on 6/1/18.
6 | // Copyright © 2018 Yellowme. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol Pokemon { }
12 |
--------------------------------------------------------------------------------