small medium large xlarge

The latest version of the book is P2.0, released over 1 year ago. If you've bought a PDF of the book and would like to upgrade it to this version (for free), visit your home page.

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: P2.0 (21-Apr-17)
PDF page: 9

"often code written a GitHub user" should be "often code written by a GitHub user"--Charles Plater

  • Reported in: P2.0 (21-Apr-17)
PDF page: 11
In section 1.5, second paragraph, second sentence: "There's always a bit of a learning curve when you're using any with any web service for the fir...more...
  • Reported in: P1.0 (10-Aug-16)
  • Fixed: 01-Aug-17, awaiting book release
PDF page: 13

"We’ll stick with tods"
was likely meant to be "todos".--Tim

Christina Moulton, Teak Mobile Inc. says: Fixed in the Swift 3 update that's now available.
  • Reported in: P2.0 (21-Apr-17)
PDF page: 28

The last line of the first paragraph as a spelling error = checkind should be checking--Charles Plater

  • Reported in: P2.0 (02-Apr-17)
PDF page: 41
at the end of the code on page 41 there is a missing closing parenthesis do { guard let todo = try JSONSerialization.jsonObject(with: r...more...
  • Reported in: P2.0 (26-Jan-18)
PDF page: 89
"private func parseNextPageFromHeaders" gives an index error in Swift 4 (xCode 9.2). Need to update "substring(with:" to new String slicing. // let...more...
  • Reported in: P2.0 (26-Jan-18)
PDF page: 100

In Swift 4 (xCode 9.2), "func refresh" needs an explicit "@objc".

// func refresh(sender: Any) {
@objc func refresh(sender: Any) {--Brian Ford

  • Reported in: P2.0 (24-Oct-17)
PDF page: 129

In the paragraph that starts "It'll get set to true..." There is a typo in the parenthesis "(but fwhen..." fwhen should be when--Charles Plater

  • Reported in: P2.0 (25-Oct-17)
PDF page: 148

In the loadingInitialData() function, the first line:

isLoading = true

should read

self.isLoading = true--Charles Plater

  • Reported in: P2.0 (31-Jan-18)
PDF page: 151
First part of the responseJSON block uses only 2 guard statements. On pg 139 this block was created with 3 guard statements. On pg 152 it has 3 and pg...more...
  • Reported in: P2.0 (25-Oct-17)
PDF page: 154
In the last paragraph of 12.1, you suggest: "Try revoking the OAuth access to your GitHub account..." This should, at a minimum, refer the user ...more...
  • Reported in: P2.0 (21-Apr-17)
PDF page: 209

In Xcode 8.3.2 the Behavior section is title Starts instead of Start. (First paragraph after the screenshot on this page."--Charles Plater