{"id":20200082,"url":"https://github.com/trainingbypackt/professional-swift","last_synced_at":"2026-05-08T03:04:03.377Z","repository":{"id":98536300,"uuid":"146560918","full_name":"TrainingByPackt/Professional-Swift","owner":"TrainingByPackt","description":"Develop practical, cutting-edge applications using the full power of Swift 4","archived":false,"fork":false,"pushed_at":"2018-09-18T08:58:52.000Z","size":73294,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-13T20:14:28.426Z","etag":null,"topics":["objective-c","ruby","swift","swift4"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TrainingByPackt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-29T07:17:05.000Z","updated_at":"2018-12-23T03:10:20.000Z","dependencies_parsed_at":"2023-05-29T09:15:12.145Z","dependency_job_id":null,"html_url":"https://github.com/TrainingByPackt/Professional-Swift","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TrainingByPackt%2FProfessional-Swift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TrainingByPackt%2FProfessional-Swift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TrainingByPackt%2FProfessional-Swift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TrainingByPackt%2FProfessional-Swift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TrainingByPackt","download_url":"https://codeload.github.com/TrainingByPackt/Professional-Swift/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241637149,"owners_count":19994925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["objective-c","ruby","swift","swift4"],"created_at":"2024-11-14T04:41:33.707Z","updated_at":"2026-05-08T03:03:58.338Z","avatar_url":"https://github.com/TrainingByPackt.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub issues](https://img.shields.io/github/issues/TrainingByPackt/Professional-Swift.svg)](https://github.com/TrainingByPackt/Professional-Swift/issues)\n[![GitHub forks](https://img.shields.io/github/forks/TrainingByPackt/Professional-Swift.svg)](https://github.com/TrainingByPackt/Professional-Swift/network)\n[![GitHub stars](https://img.shields.io/github/stars/TrainingByPackt/Professional-Swift.svg)](https://github.com/TrainingByPackt/Professional-Swift/stargazers)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/TrainingByPackt/Professional-Swift/pulls)\n\n\n\n# Professional Swift\nWe begin the course by learning about value types (structs and enums), and when they are preferable over classes. We also learn about the copy-on-write technique and how to implement it ourselves. Then we learn how to load JSON from web APIs into our custom types, and how to export that content out again. Finally we learn how to create frameworks, and import other frameworks using CocoaPods or Carthage.\nWe move on to learn advanced uses of Swift protocols and how protocol-oriented development improves efficiency and leads to more maintainable and reusable code. Then we learn about generics, and how they enable us to support multiple types without duplication. Later in the course, we discover different ways to structure a complete iOS app from scratch. We begin the discussion with the well-known MVC pattern and cover every other trending architecture in the iOS world.\n\n\n## What you will learn\n* Load content from web APIs into structs\n* Explore methods to store structs to files\n* Implement the copy-on-write technique\n* Study protocols and protocol-oriented programming in depth\n* Write code with less duplication using generics\n* Compare different architectural patterns for iOS apps\n* Create an IoS app using Redux\n\n\n## Hardware Requirements\nFor an optimal experience with the hands-on labs and other practical activities, we recommend the following hardware confiuration:\nA Mac computer capable of running macOS Sierra 10.12, such as:\n* MacBook (Late 2009 or newer)\n* MacBook Pro (Mid 2010 or newer)\n* MacBook Air (Late 2010 or newer)\n* Mac mini (Mid 2010 or newer)\n* iMac (Late 2009 or newer)\n* Mac Pro (Mid 2010 or newer)\n\n## Software Requirements\nYou must also install the following softare in advance:\n* Safari browser\n* macOS 10.12.6+\n* Xcode 9\n\n## Installation and Setup\nBefore beginning the course, ensure that you complete the following steps:\n1. If not already installed, install Xcode 9 from the Mac App Store.\n2. Launch Xcode, agree to the license agreement, and answer Yes to installing additional required components if asked.\n3. Go to the terminal and install Homebrew, CocoaPods, and Carthage using these commands:\n```\n/usr/bin/ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\"\nbrew install CocoaPods\nbrew install Carthage\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrainingbypackt%2Fprofessional-swift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrainingbypackt%2Fprofessional-swift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrainingbypackt%2Fprofessional-swift/lists"}