S Link
Automated code review for Swift
Get instant feedback on your code! codebeat is hosted static analysis for mobile and web focused on complexity, duplication, and best practices. codebeat is built for your stack and workflow. It will analyze every pull request and post an email or Slack status with a linked quality report. Free for open source, 14-day free trial for private repositories. To get $10 discount for your first month, use SWIFT_ROCKS coupon code at checkout.
Come see Natasha the Robot at iOSDevCampDC 2016!
Come see Natasha the Robot, Michele Titolo, Samuel Giddins, Ayaka Nonaka, Tom Harrington, Aileen Nielsen and Alex Niderberg talk about iOS development at iOSDevCampDC 2016 on July 22nd. It is a one-day, one-track, seven-speaker conference focused on iPhone and iPad development. It is the 8th annual event dedicated to iOS in the Washington, DC area. All proceeds go to Women Who Code DC. Register for iOSDevCampDC today!
Swift Around the Web
WWDC 2016: Increased Safety in Swift 3.0
A good explanation of the new Swift 3.0 changed around implicitly unwrapped optionals and how the compiler now infers type information for ImplicitlyUnwrappedOptional
. Definitely really important to understand for Swift 3.0. Read more in the full proposal here.
Good Swift, Bad Swift
Good series on what "good" Swift is. Keep in mind that we're still developing best practices as a community, but these are pretty basic things that could improve most Swift codebases (if they don't take advantage of these patterns already). Part 1 here.
Coding
Concurrent Core Data, Now Easier Than Ever
👋 NSPersistentContainer
"All contexts are independent of each other, there are no parent/child relationships here. To receive changes from other contexts we simply set
automaticallyMergesChangesFromParent
flag totrue
on a context. Despite its name (*FromParent*
), it works correctly with theNSPersistentContainer
setup in which contexts are siblings."
A quick look at UIViewPropertyAnimator
"Animations are essentially interpolations between UIView properties that you define in a closure. You can either let an animation run with a duration or you can connect a gesture to update the animator’s fractionComplete property. All the animations are easily interruptible and reversible by default."
Design
Big, bold, and beautiful: Apple's design language is changing in iOS 10
During WWDC week, I had the pleasure of attending the parallel design conference Layers for a day. While I was getting a snack, another attendee started chatting with me about how excited he was about fonts (the Typography session was live-streaming at the time). I agreed with him, but honestly it's hard for me to notice the difference. It was refreshing to be out of my comfort zone and learn about how others in our field see the big changes at WWDC.
Love this article about the design changes that are hard for me to notice myself!
Other Cool Stuff
Making a Difference in the Real World
WWDC lunch sessions are the best! Really enjoyed this inspirational talk from Marvel Games Creative Director Bill Rosemann. With great power comes great responsibility 💪
In Case You Missed It
Practical Protocol-Oriented-Programming
The video of my POP 💥 talk is out! Learn how to apply Swifty protocols to your everyday scenarios.
Videos
Discovering Native Swift Patterns
The key takeaway here is that our idea of the best Swift patterns change over time. If you're still on the edge with Swift, just start. You won't write great Swift initially, but you'll become better over time. And if you're already writing Swift, keep an open mind to change what you think is great right now.
Loading View Controllers
I love the idea of using a Loading
protocol for managing the activity indicator spinner 😍
Swift Evolution
[SE-0099] ACCEPTED: Restructuring Condition Clauses
Takes out the awkward where
clause that is sometimes the only choice in conditionals and makes it stand out on it's own as a comma-separated statement 👏
So this:
guard
x == 0,
let y = optional where z == 2
else { //... }
Becomes this:
guard
x == 0,
let y = optional,
z == 2
else { //... }
WATCH
watchOS 3 Key Takeaways from WWDC16 (Part 2)
Some big ones that stood out to me:
- All 3rd party apps are encouraged to have complications, even if there’s no data to show
- The main path to optimize is not the launch any longer, it’s the app resume
- Each interaction with the watch should be no longer than 2 seconds
Swift Code
- SaveTheDot - A game developed using UIViewPropertyAnimator
- LegofySwift - Make images look as if they are made out of 1x1 LEGO blocks
- reel-search - RAMReel is a controller that allows you to choose options from a list
- Iconic - Auto-generated icon font library for iOS [beta]
- SwiftLinkPreview - It makes a preview from an url, grabbing all the information such as title, relevant texts and images.
- Periscope-VideoViewController - Video view controller with Periscope fast rewind control
Swift Thoughts
As I've been catching up on more WWDC16 videos and processing everything, one thing that I keep thinking about as the common theme of WWDC16 is the decentralization of apps. Instead of building apps, we're encourage of build extensions - iMessage plugins, Notification Widgets, Siri Integration, Watch Complications, etc.
In case you haven't seen it, the big announcement at Google I/O this year was Instant Apps. Instead of downloading the entire app, Android can now download just the part of the app needed instantly to have a native user experience for whatever task the user needs to complete. I think all these small extensions set iOS up to do something similar next year.