Swift 3.0 Released!
This deserves a confetti-themed iMessage party 🎉🎉🎉 I also like the balloons 🎈🎈🎈
Working with JSON in Swift
One of the questions I get a lot is which library I use to parse JSON. While a library was definitely needed when Swift first came out to avoid the horrible pyramid of doom, I've found that I can just build my own solution using guards that is good enough. It's simple enough in Swift 2 and 3 where an external library really doesn't seem necessary. Glad to see an actual example of this from Apple!
Swift Around the Web
Function Naming In Swift 3
I started upgrading my project to Swift 3.0 this weekend, and the naming is definitely something I'm still wrapping my head around (looking at you lowercase enums!). Only patience, practice, and constantly reviewing the API Design Guidelines as suggested in this article will help!
Ranges in Swift 3
Hmm... didn't think of open vs closed ranges as having this much of an irreconcilable difference 🤔
"Not only isn’t there an automatic conversion between closed and half-open ranges, there appears to be no way to do this at all! But why? Well, to turn a closed range into an equivalent half-open range, you would have to find the element that comes after the original range’s upper bound. And that is simply not possible unless the element is
Strideable, which is only guaranteed for countable ranges (and countable ranges do provide initializers to convert between the two)."
iOS Conf SG - 20th and 21st of October, Singapore
Early-bird ticket sale ends in a week. Learning Swift and want to enhance your skills further? Come to iOS Conf SG! Learn how experienced Swift and iOS developers build their apps. Use the promo code "swift" to get 80 SGD discount on early-bird ticket price.
Buddybuild: continuous integration & delivery made easy!
Buddybuild is the only mobile continuous integration and delivery platform that takes just minutes to set up. With every code change, buddybuild will kick off a new build, run any tests for your app and automatically deploy to your testers. Then, with a simple screenshot, users can send their feedback along with diagnostic details to help resolve issues. Stop cobbling together and maintaining disparate mobile development systems. Start focusing on what you do best: creating apps people love 🚀
Swift Weekly Brief
Whoa! Swift 3.1 has been reportedly sighted in the wild! Might need to do some additional upgrades after 3.0 😬
A new way to plan your trip: Introducing the Airbnb iMessage App
I was actually doing the old-way sharing of AirBNBs via iMessage just last week as I was planning a trip with a friend. It was awful. I had to open the link, which prompted me to download the app (which I already had installed), and by the time I saw the listing, I completely forgot which one matched the url in the iMessage / which one we agreed to book.
I'd love to see more apps integrate with iMessage like this! Although, I do wish the link formatting happened a lot more automatically than doing it via the AirBNB iMessage app. It's a good start and so much potential for so many apps!
Preparing Your iOS App for Extensions
Extensions - whether it's for the Apple Watch or iMessage or lock-screen Extensions or Siri (Looking at you Airpods!) are clearly the way of the future in iOS development. Time to seriously consider breaking down your code into small, reusable Frameworks if you haven't already. I know this is going to be a big project for me in the next few weeks.
- iOS-10-Sampler - Code examples for new APIs of iOS 10.
- Kakapo - 🐤Dynamically Mock server behaviors and responses in Swift
- xTextHandler - Xcode Source Editor Extension Tools (Xcode 8 Plugins)
- StatusProvider - Protocol to handle initial Loadings, Empty Views and Error Handling in a ViewController & views
- View2ViewTransition - Custom interactive view controller transition from one view to another view.
- PhotoCropEditor - Framework written in Swift for Cropping Images easily
iOS 10: Swift 3 API Design Guidelines
Really good examples for applying the new Swift 3.0 API Guidelines as I (and everyone else) start using and getting used to the new naming changes 😅
In Case You Missed It
CloudKit: What is it good for?
This blog post is more of a general architecture overview of my first time using CloudKit for a use-case where it came in handy...
Write Swift Full Time
- Senior Entwickler (m/w) iOS at Arvato Systems - Rheda-Wiedenbrück
- iOS Engineer at Loot - London, Great Britain
- Software Engineer iOS at trivago - Düsseldorf, Germany
Random Cool Stuff
The home of the Audi R8
I seriously love the idea of AirBNB partnerships like this one to create really cool experiences. Keep them coming 🏎