Hi,
I’m really keen to get started with macOS development having learned a little Swift. I’d really like to pick up this book but am concerned it may be getting a bit out of date, although there doesn’t seem to be many alternative titles. Is there any prospect of this book being updated in the near-ish future and, if not, is the 5th edition worth picking up at this stage (August 2018)?
Cheers, Steven
I just worked my way through the fifth edition book. It is outdated, but it can be done and you can learn a lot from it. Part of what you’ll learn is how to find answers on line. If you reference these forums and ask questions here, you can work through the changes. Here is a link that shows the changes in code used in this book to Swift 2, which helps to figure out how to get it to Swift 4: https://github.com/wookiee/cocoa-programming-for-osx-5e/blob/master/Swift2.md
From all appearances the authors have abandoned this book (they are no longer on this particular forum, and they used to be) and I have not heard of them making the next edition. Anybody else hear anything?
Joel
If you’ve just learned some swift, I’d suggest learning on iOS first rather than MacOS. 2 reasons:
- There are more recent books for iOS
- iOS is easier because the frameworks were developed more recently. So there’s less old cruft than programming MacOS.
Having completed my iOS training, I’m now learning MacOS via this book. As part of my training I’ve branched and updated the programs for chapters 1-5 to Swift 4.2 and Xcode10. Here’s the link:
I’m continuing to work my way through the book beyond chapter 5.
For reference Big Nerd Ranch’s master link is:
I’ve submitted a pull request for chapters 1-5 to be integrated into the master. We’ll see if my pull requests get accepted.
For reference: here’s the most common things to fix so far:
(#1 and #2 are particularly frustrating: without fixing them your main window does not appear at all–your MainWindowController never gets instantiated!)
-
AppDelegate.swift correct this line (adding a _ and changing from NSNotification to Notification:
func applicationDidFinishLaunching( _ aNotification: Notification) {
-
MainWindowController.swift you need to update the windowNibName to return a NSNib.Name rather than a String:
override var windowNibName: NSNib.Name? {
return NSNib.Name(“MainWindowController”)
}
-
If you download the old swift 2 source code, all connected actions from all buttons/controls are all broken. Disconnect and then reconnect them.
-
If you download the old swift 2 source code, you need to set the swift version in the build rules. I suggest swift 4.2.
-
There are other things to fix in the chapter 1 project, but the compiler messages are pretty clear. You often have to add parameter names to the first parameter during function/method calls.
Darrell