S Link
Migrating to Swift for iOS Developers
5-day class for iOS developers: Migrate your own Obj-C app to Swift, and explore new iOS 8 features. First class led by Homebrew pro developer Max Howell.
Swift Around the Web
Collection Data Structures In Swift
@designatednerd does a Big-O analysis on common data structures in Swift. There is clearly a lot of speed improvements that Swift needs to make, but it is definitely faster in some areas:
"Looking up items within an array is where Swift justifies its name. Lookups up by index and object grow at very close rates for both Swift arrays and NSArray. When you’re looking up by object, large Swift arrays perform 50 times faster than using comparable NSMutableArray objects."
The 5 W’s of Swift Extensions
If you're a Swift / iOS beginner, this is a great post for understanding the Who? What? When? Where? and Why? of extending a Swift Type.
Coding
How do you distribute beta iOS apps to your team?
Although I was really excited about TestFlight's integration with Apple for beta testing finally coming out, this post makes it very clear that TestFlight's Beta Testing is not ready for prime time yet. Kind of glad I haven't made the switch just yet.
First Go at Using IB_DESIGNABLE and IBInspectable
This is a very simple example of how to use the new IB_DESIGNABLE and IBInspectable to set custom properties for your views in interface builder, empowering designers to easily change properties as needed. It always amazes me when this works - feels like magic!
Continuous Integration With Xcode Server
This is a very detailed overview of how to set up continuous integration with XCode server. From my experience, the process is pretty quick and painless especially compared to other systems out there. And you get the bonus of seeing everything run inside of XCode! Try it out on your next project if you haven't already.
Design
Dark Sky: iOS 8 Update
I love how much thought the Dark Sky app creators put into making a good iOS8 widget. They really thought about the minimal amount of information that would be most useful to their user at a quick glance. To be honest, I haven't really found myself checking widgets much (if at all), but this type of thinking is definitely what we, as developers and designers, will have to do as we create our first WATCH apps.
Other Cool Stuff
In Case You Missed It
UISplitViewController
Last week I had the honor of contributing to one of my favorite iOS blogs - NSHipster! This gave me a chance to dive a lot deeper into UISplitViewController, which has a few little nuances to watch out for. Hopefully, you'll find the little tips useful for writing your own UISplitViewController in your own Universal iOS apps in the near future. Enjoy!
Functional Voodoo
Reduce
I knew that Reduce works great for adding / multiplying numbers, but did you know you can use it to check if all Bools in a list are true?!!!
Swift and valueForKeyPath: You Can’t Keep A Good API Down!
Matt Long shows off how to use the new and shiny Swift map function to replace the old Objective-C valueForKeyPath.
WATCH
WatchKit Hackathon
The first WatchKit Hackathon is happening on November 23rd in San Francisco!!! There will also be a workshop the day before filled with the newest WatchKit and WATCH design tips. For those not located in the San Francisco area, all the talks will be streamed online.
Expectations for WatchKit
David Smith wrote up a great analysis of what we can expect from WatchKit based on Apple's press releases and the new iOS8 API components. The takeaway: keep your expectations low for the first version. The second version at WWDC 2015 will be a lot more exciting. Also, make sure to read David's other post this week: Understanding the Promise of the AppleWatch to get the full understanding of the eco-system.
Swift Code
Swift Thoughts
Is WatchKit out already?!!! The suspense is intense, but I really loved this article by David Smith laying out the more realistic scenario of what we'll be able to do with the very first version of WatchKit. Hint: Get acquainted with extensions (aka widgets) and actionable notifications.