Responding To Keyboard Events in iOS

January 30, 2018 | Swift, View Controllers, iOS, UIKit

Wherever users can enter text in our apps, we usually need to respond to keyboard events. Adjusting our app's UI when the keyboard is shown and dismissed is necessary to maintain a good user experience. But what if we have multiple screens in our app that need to respond to keyboard events?

Using URLSession & Codable Together

January 23, 2018 | Swift, Networking, iOS, macOS, tvOS, watchOS

Almost every app we write needs to retrieve and serialize data from an API. Networking and serialization are not easy problems to solve, which is why open-source frameworks like Alamofire, Moya, and SwiftyJSON have been written to simplify this task. However, using URLSession and the new Codable protocol introduced in Swift 4 . . .

Building A PDF Viewer With PDFKit in iOS 11

January 16, 2018 | Swift, PDFKit, iOS, macOS

PDFKit has been available to Mac developers since 10.4, but with iOS 11 Apple brought its support for viewing, editing, and authoring PDFs to iPhone and iPad. Previously, viewing PDF files meant rendering each page yourself with Core Graphics and Core Text, using an indirect solution like UIWebView or QuickLook, or . . .

Keychain Services Core Concepts

January 9, 2018 | Swift, Authentication, Security, iOS, macOS, tvOS, watchOS

Most apps need to store sensitive user information at some point. Most commonly it's a service-specific credential like a password or authentication token, but it could also be an encryption key, expiration date, or really anything private to the user that shouldn't be easily accessible on the device.

Machine Learning in Swift: Document Classification with Core ML

January 2, 2018 | Swift, Machine Learning, Core ML, iOS, macOS, tvOS, watchOS

It's an exciting time for Swift developers to get into machine learning. With Apple's new Core ML framework, support on all four platforms, and a growing library of models available for the framework, incorporating machine learning solutions in Swift apps has never been easier.