Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.
So WWDC is less than a week away. A week today and the keynote will be over and we’ll all be digging into the new goodies that Apple has been working on. Given that Swift development is happening in public now, I don’t envisage any surprises on that front, but I’m definitely excited to see what Monday will bring. For me, my biggest wish is for stability improvements in Xcode. It’s been driving me nuts lately so if they could solve that I think I’d be happy. I suspect that we might also see some changes to the UIKit and AppKit APIs to better align their usage in Swift but on that front we’ll have to wait and see. Anyway, I’ll be watching the keynote (from the comfort of my sofa I’m afraid) but if you are heading to SF, have a really great week!
A couple of things before we dive in to the links. After last weeks newsletter I had a request from @jaxondu about whether I could increase the size of the font for the email version of this newsletter as it was a little difficult to read. Hopefully I’ve improved things but let me know what you think.
And of course if you’ve no idea what I’m on about and you haven’t subscribed yet, you can always do so here… Go on, you know you want to! ?
As I think I’ve mentioned before, Sketch by Bohemian Coding is my goto tool for interface design and initial app mockups (it’s also the same tool I use to draw all my article images) and now that I’ve been using it a while I’d class myself as somewhat proficient. With that said, there is always room for improvement and in this article, @dearlorenz gives us some great tips on how to speed up our workflows.
Asking for user permission is always a tricky business and it can have a major affect on user retention. @101babich gives us another great article, this time looking at not only when to ask users for permission but also how to do so whilst providing a seemless user experience.
Is it MVVM or Scene-Stage-Director? In this article, @srdanrasic provides a different perspective on the MVVM architectural pattern as he searches for clarity around the different components responsibilities.
So it’s been a few weeks but I managed to post another article this week in our continuing journey through the Swift programming language. This weeks topic – Enumerations in Swift. I’d love to hear your thoughts.
Refactoring to: Parameter Objects
In this article, @natashatherobot takes onboard some of the lessons from @modocache‘s UIKonf 2015 talk on Swift Patterns in iOS API Design and looks at how to design and refactor APIs to minimise the impact of code changes. It’s an interesting idea.
NSNotificationCenter is one of the most obvious uses of the Observer Pattern in the UIKit framework. Although it is a great design pattern and is used extensively by Apple, it does have it’s disadvantages though. In this article @AndyyHope applies some Swift goodness to see if he can overcome some of NSNotificationCenters shortcomings.
With the ability to now run Swift code on a variety of different platforms, the need to determine the platform the code is executing on is increasingly important. The good news, is that Swift has this ability built in, and in this article @ericasadun gives us a run-down of just what is possible.
In last weeks newsletter I mentioned the discussions going on in the community with regards to ‘dynamic’ Swift. One often cited example people have been using to justify the need for such dynamism is NSUndoManager and it’s use of reflection. In this article @chriseidhof illustrates that the need for reflection isn’t necessarily an open and shut case, and gives us a lesson on how to think differently by eschewing reflection and implementing a generic undo history using only Swift structs.
Parse Server – 100 Days Later
Around 100 days ago, Parse.com announced that it would be shutting down on 28th January 2017 and at the same time, an open sourced Parse Server was born. In this article, @swiftingio takes a look at the ecosystem that has sprung up around this new open-source project and also surveys the variety of options that are now available. If you are one of those who was affected by the announcement, time’s-a-tickin’ but at least now you have a range of options to choose from.
If you’re going to WWDC, you might have come across this already but if you haven’t, @KrauseFx has put together a nice app to help you connect with other developers who are either attending the conference or are in the SF area next week.
Quick reached the grand old age of 2 this week. If you’ve not come across it before, it’s a behaviour-driven development framework developed by @modocache for Swift and Objective-C. A good choice if you want to take your testing to the next level.
I’m still catching up with all the videos from iOSCon last week, but one I have already watched is this one from @designatednerd. In it, she provides some practical tips on how to test your iOS apps including testing your networking stack, how to test your core data stack as well as covering some of the basics of UI testing. It’s a great talk and one worth watching.
As I mentioned at the start, I have a suspicion that WWDC might bring some changes to the UIKit APIs but I suspect that the more invasive changes needed to bring greater alignment between UIKit’s architecture and the declarative approach preferred by Swift will be much further in the future. In the mean time that leaves developers wrestling with the differences between these two paradigms. In this video, @benjaminencz introduces the idea of a declarative view layer that may help.
Please Don’t Quit — Every Expert Was Once a Beginner
App development and software development in general are by their very nature moving beasts. We are always trying to build something new and tackle something different and although I suspect that this article from @WebDev_Cave was originally targeted at people who are just learning to code I think it’s got a lot of points that are that are applicable to all of us.