Mastering MVVM with Swift: Updated for Xcode 9 and Swift 4


Book Description

"I don't feel in control of my project's architecture." - You"MVC simply doesn't cut it. There must be a better solution." - Yours TrulyDespite its widespread, the Model-View-Controller pattern just doesn't cut it for most Swift projects. Take control of your Swift projects with the Model-View-ViewModel pattern.Massive View Controller SyndromeFiring up Xcode and starting a new project is a great feeling. The first few days or weeks don't feel like work. Everything goes according to plan.But as the code base of your project grows, it becomes harder and harder to manage the project. The view controllers of your project start to put on weight ... a lot of weight. They become more than view controllers. They take on responsibilities they didn't sign up for. Don't they?Yet you've done everything right. You've stuck to the rules of the Model-View-Controller pattern. Why have you coded yourself in a corner? And why is it frustrating or downright scary to add features or refactor existing functionality?It's Time to Cure MVCIf your project is suffering from Massive View Controller syndrome, then the Model-View-ViewModel pattern is the cure to your problem. The Model-View-ViewModel pattern has been around for many, many years, but it only recently gained traction in the Cocoa community.MVVM extends MVC by resolving common issues. The result is a robust application architecture with lean view controllers, improved testability, and a better separation of concerns. How does that sound?Take Control of Your Project With MVVMIn Mastering MVVM With Swift, we refactor an existing application built with MVC to use MVVM instead. The results are dramatic and the MVVM pattern is surprisingly easy to adopt in your own projects.You learn the differences between Model-View-Controller and Model-View-ViewModel, highlighting the benefits Model-View-ViewModel has over Model-View-Controller.After a short introduction, we take an application built with Model-View-Controller and refactor it to use Model-View-ViewModel instead. Along the way, you learn about the anatomy of view models, how to create them, and how to test them.Last but not least, we add protocols and protocol-oriented programming to the mix to further simplify the view controllers in the project.At the end of this course, you have the knowledge and, more importantly, the hands-on experience to apply Model-View-ViewModel in your own projects.Ready for Xcode 9 and Swift 4In Mastering MVVM With Swift, you learn everything you need to know to integrate MVVM in a new or an existing Swift project. We focus on the key aspects of the pattern and refactor an application that takes advantage of the core features of MVVM. We use the latest and greatest to build an application, which means we use Xcode 9 and Swift 4.Battling Massive View Controller SyndromeAre the view controllers of your projects suffering from Massive View Controller syndrome? You've carefully crafted the architecture of your application using the Model-View-Controller pattern and, yet, the view controllers of your project are ready to burst and they're impossible to test.Adding a feature forces you to wade through hundreds of lines of code. You hope you don't break anything while you carefully add a few lines of code. Don't get me wrong. Your code isn't bad. But there's just so much of it. You've applied the Model-View-Controller pattern like you were told to and you still end up with an architecture you aren't quite happy with. Does this sound familiar?It's Not You. It's MVC.Because Apple's frameworks are impregnated with the Model-View-Controller pattern we think it's the right or only tool for the job. Don't make the same mistake. There's nothing wrong with the Model-View-Controller pattern, but there are better alternatives, especially if you're using Swift.




Design Patterns by Tutorials


Book Description

Learn iOS Design Patterns! Design patterns are reusable solutions to common development problems. They aren't project specific, so you can adapt and use them in countless apps. By learning design patterns, you'll become a better developer, save time and work less. Design Patterns by Tutorials is here to help! This book is the easiest and fastest way to get hands-on experience with the iOS design patterns you need to know. Who This Book Is For Whether you're a beginner, intermediate or advanced iOS developer, this book is for you. You can either read this book from cover to cover, or skip around to just the patterns you want to learn. Topics Covered in Design Patterns by Tutorials Getting Started: You'll first learn about how design patterns work and how they can help you build better, cleaner apps. Fundamental Patterns: You'll progress onto fundamental design patterns, such as MVC, Delegation, and Strategy, which you're likely to use on every iOS app. Intermediate Patterns: You'll then learn about intermediate design patterns, such as MVVM, Factory, and Adapter, which are less common than fundamental patterns but still very useful for most apps. You'll finish off by learning about advanced design patterns, including Flyweight, Mediator and Command. You likely won't use these on every app, but they may be just what you need to solve a difficult problem. One thing you can count on: after reading this book, you'll be well-prepared to use design patterns in your own apps!




Swift in Depth


Book Description

Summary Now updated for Swift 5! Swift is more than just a fun language to build iOS applications with. It features a host of powerful tools that, if effectively used, can help you create even better apps with clean, crystal-clear code and awesome features. Swift in Depth is designed to help you unlock these tools and quirks and get developing next-gen apps, web services, and more! Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology It's fun to create your first toy iOS or Mac app in Swift. Writing secure, reliable, professional-grade software is a different animal altogether. The Swift language includes an amazing set of high-powered features, and it supports a wide range of programming styles and techniques. You just have to roll up your sleeves and learn Swift in depth. About the Book Swift in Depth guides you concept by concept through the skills you need to build professional software for Apple platforms, such as iOS and Mac; also on the server with Linux. By following the numerous concrete examples, enlightening explanations, and engaging exercises, you'll finally grok powerful techniques like generics, efficient error handling, protocol-oriented programming, and advanced Swift patterns. Author Tjeerd in 't Veen reveals the high-value, difficult-to-discover Swift techniques he's learned through his own hard-won experience. What's inside Covers Swift 5 Writing reusable code with generics Iterators, sequences, and collections Protocol-oriented programming Understanding map, flatMap, and compactMap Asynchronous error handling with ResultBest practices in Swift About the Reader Written for advanced-beginner and intermediate-level Swift programmers. About the Author Tjeerd in 't Veen is a senior software engineer and architect in the mobile division of a large international banking firm. Table of Contents Introducing Swift in depth Modeling data with enums Writing cleaner properties Making optionals second nature Demystifying initializers Effortless error handling Generics Putting the pro in protocol-oriented programming Iterators, sequences, and collections Understanding map, flatMap, and compactMap Asynchronous error handling with Result Protocol extensions Swift patterns Delivering quality Swift code Where to Swift from here




Hands-On Design Patterns with Swift


Book Description

From learning about the most sought-after design patterns to a comprehensive coverage of architectural patterns and code testing, this book is all you need to write clean, reusable code Key Features Write clean, reusable and maintainable code, and make the most of the latest Swift version. Analyze case studies of some of the popular open source projects and give your workflow a huge boost Choose patterns such as MVP, MVC, and MVVM depending on the application being built Book Description Swift keeps gaining traction not only amongst Apple developers but also as a server-side language. This book demonstrates how to apply design patterns and best practices in real-life situations, whether that's for new or already existing projects. You'll begin with a quick refresher on Swift, the compiler, the standard library, and the foundation, followed by the Cocoa design patterns - the ones at the core of many cocoa libraries - to follow up with the creational, structural, and behavioral patterns as defined by the GoF. You'll get acquainted with application architecture, as well as the most popular architectural design patterns, such as MVC and MVVM, and learn to use them in the context of Swift. In addition, you'll walk through dependency injection and functional reactive programming. Special emphasis will be given to techniques to handle concurrency, including callbacks, futures and promises, and reactive programming. These techniques will help you adopt a test-driven approach to your workflow in order to use Swift Package Manager and integrate the framework into the original code base, along with Unit and UI testing. By the end of the book, you'll be able to build applications that are scalable, faster, and easier to maintain. What you will learn Work efficiently with Foundation and Swift Standard library Understand the most critical GoF patterns and use them efficiently Use Swift 4.2 and its unique capabilities (and limitations) to implement and improve GoF patterns Improve your application architecture and optimize for maintainability and performance Write efficient and clean concurrent programs using futures and promises, or reactive programming techniques Use Swift Package Manager to refactor your program into reusable components Leverage testing and other techniques for writing robust code Who this book is for This book is for intermediate developers who want to apply design patterns with Swift to structure and scale their applications. You are expected to have basic knowledge of iOS and Swift.




iOS 12 Programming Fundamentals with Swift


Book Description

Move into iOS development by getting a firm grasp of its fundamentals, including the Xcode 9 IDE, Cocoa Touch, and the latest version of Apple’s acclaimed programming language, Swift 4. With this thoroughly updated guide, you’ll learn the Swift language, understand Apple’s Xcode development tools, and discover the Cocoa framework. Explore Swift’s object-oriented concepts Become familiar with built-in Swift types Dive deep into Swift objects, protocols, and generics Tour the lifecycle of an Xcode project Learn how nibs are loaded Understand Cocoa’s event-driven design Communicate with C and Objective-C Once you master the fundamentals, you’ll be ready to tackle the details of iOS app development with author Matt Neuburg’s companion guide, Programming iOS 12.




Advanced IOS App Architecture (Third Edition)


Book Description

Apply Different Architectures to Your Codebase! Advanced iOS App Architecture guides you through building one real-world app written in different architectures to give you hands-on and practical experience working in different architectures. This book will also guide you through the theory you need to gain a solid foundation of architecture concepts so that you can make your own informed decisions on how to use them in your codebase. Who This Book Is For This book is for intermediate iOS developers who already know the basics of iOS and are looking to build apps using defined architectures, making apps cleaner and easier to maintain. Topics Covered in Advanced iOS App Architecture Navigating Architecture Topics: Learn the theory behind various architectures to help inform which works best for you in different situations you may face. Managing Dependencies: Learn how to manage dependencies both internally and externally within your app. MVVM Architecture: Explore the history of the MVVM architecture and begin building KOOBER - the book's project app - using MVVM principles. Redux Architecture: Explore the history of the Redux architecture and continue building KOOBER using Redux principles. Elements Architecture: Explore the history of the Elements architecture and continue building KOOBER using Elements principles. SwiftUI: Explore SwiftUI and find out how to adapt existing application architectures for use with SwiftUI. After reading this book, you'll have the knowledge to decide which types of architecture components suit your apps and you'll have a deep understanding of the covered architectures. About the iOS Architecture Team The architecture team is a group of seasoned developers who work for large multi-national companies who deal with large and diverse code bases on a daily basis. The knowledge procured over years of development is now being transferred to you through book. We hope you enjoy the book and, hopefully, you'll apply some of the architectures you've learned to your own apps




Modern Concurrency in Swift (Second Edition)


Book Description

Learn Modern Swift Concurrency! For years, writing powerful and safe concurrent apps with Swift could easily turn into a daunting task, full of race conditions and unexplained crashes hidden in a massive nesting of callback closures. In Swift 5.5, Apple introduced a new concurrency model featuring the async/await syntax, which lets you write asynchronous code that reads like synchronous code. But like any new feature, here be dragons! So how will you achieve the much-desired mastery of modern Swift concurrency? Modern Concurrency in Swift comes to the rescue, showcasing what you need to know about async/await, tasks, actors and everything in between! Who This Book Is For This book is for intermediate Swift developers who are familiar with writing asynchronous applications and who want to leverage the concurrency features Apple introduced in Swift 5.5 and its evolution throughout the years, to write safer and more predictable asynchronous apps. Topics Covered in Modern Concurrency in Swift Using async/await: Learn how to use the new async/await keywords to define and run asynchronous work. Actors: Find out how to use the actor model to easily protect shared mutable state in a synchronized container. Tasks: You'll dive deeper into the Task type, which powers all asynchronous tasks in Swift's modern concurrency model. Task Groups: Use a Task Group to group multiple tasks together and run them concurrently, while using a familiar Array-like syntax to iterate over the results. Custom Asynchronous Sequences: Leverage the power of async/await in your own asynchronous work, by learning how to create custom AsyncStreams. Testing Asynchronous Code: Asynchronous code can be a challenging beast to test. You'll learn everything you need to tackle this challenge. One thing you can count on: After reading this book, you'll be prepared to leverage Swift's new concurrency features in your app to write safe, performant and predictable asynchronous code.




RxSwift (Fourth Edition)


Book Description

Learn Reactive Programming in Swift with RxSwift!The popularity of reactive programming continues to grow on an every-increasing number of platforms and languages. Rx lets developers easily and quickly build apps with code that can be understood by other Rx developers - even over different platforms.Not only will you learn how to use the RxSwift port to create complex reactive applications on iOS, you'll also see how to easily solve common application design issues by using RxSwift. Finally you'll discover how to exercise full control over the library and leverage the full power of reactive programming in your apps.This books is for iOS developers who already feel comfortable with iOS and Swift, and want to dive deep into development with RxSwift.Topics Covered in RxSwift:- Getting Started: Get an introduction to the reactive programming paradigm, learn the terminology involved and see how to begin using RxSwift in your projects.- Event Management: Learn how to handle asynchronous event sequences via two key concepts in Rx - Observables and Observers.- Being Selective: See how to work with various events using concepts such as filtering, transforming, combining, and time operators.- UI Development: RxSwift makes it easy to work with UI of your apps using RXCocoa, which provides integration of both UIKit and Cocoa.- Intermediate Topics: Level up your RxSwift knowledge with chapters on reactive networking, multi-threading, and error handling.And much, much more!By the end of this book, you'll have hands-on experience solving common issues in a reactive paradigm - and you'l be well on your way to coming up with your own Rx patterns and solutions!




Learn SwiftUI


Book Description

Get to grips with Apple’s new SwiftUI framework for creating robust UIs for iOS and iPadOS using Swift programming Key FeaturesUse SwiftUI for building dynamic apps for Apple devices from scratchUnderstand declarative syntax in cross-platform development and how states work within SwiftUILearn to develop watchOS apps by reusing SwiftUI codeBook Description SwiftUI is the new and powerful interface toolkit that lets you design and build iOS, iPadOS, and macOS apps using declarative syntax. It is a powerful way to develop the UI elements of applications, which would normally be tightly coupled to application logic. Learn SwiftUI will get you up to speed with the framework and cross-device UI development in no time. Complete with detailed explanations and practical examples, this easy-to-follow guide will teach you the fundamentals of the SwiftUI toolkit. You'll learn how to build a powerful iOS and iPadOS application that can be reused for deployment on watchOS. As you progress, you'll delve into UI and unit testing in iOS apps, along with learning how to test your SwiftUI code for multiple devices. The book will also show you how to integrate SwiftUI features such as data binding and network requests into your current application logic. By the end of this book, you will have learned how to build a cross-device application using the SwiftUI framework and Swift programming. What you will learnExplore the fundamentals of SwiftUI and compare it with existing UI frameworksWrite SwiftUI syntax and understand what should and shouldn't be included in SwiftUI's layerAdd text and images to a SwiftUI view and decorate them using SwiftUI's modifiersCreate basic forms, and use camera and photo library functions to add images to themUnderstand the core concepts of Maps in iOS apps and add a MapView in SwiftUIDesign extensions within your existing apps to run them on watchOSHandle networking calls in SwiftUI to retrieve data from external sourcesWho this book is for This SwiftUI book helps any mobile app developer looking to understand the fundamentals of the new SwiftUI framework along with the benefits of cross-device development. A solid understanding of iOS and macOS app development, along with some knowledge of the Swift programming language, will be beneficial. Basic programming knowledge is essential to grasp the concepts covered in the book effectively.




Advanced Swift


Book Description

Advanced Swift takes you through Swift's features, from low-level programming to high-level abstractions. In this book, we'll write about advanced concepts in Swift programming. If you have read the Swift Programming Guide, and want to explore more, this book is for you. Swift is a great language for systems programming, but also lends itself for very high-level programming. We'll explore both high-level topics (for example, programming with generics and protocols), as well as low-level topics (for example, wrapping a C library and string internals).