Best Practices: Structuring Your Swift Code!

As your project grows in size, it’s essential that your code is structured well so that future maintenance doesn’t become a pain.

Checkout the article below by John Sundell who provides some great tips to organize your code base which will pay big dividends down the road.

Whenever you touch a part of the code base, you’ll try to leave it better than how you found it

Source: Structuring Swift code — Swift by Sundell

Unit Tests: The complete guide to Network Unit Testing in Swift!

Networking is one of the most popular features in iOS development but is also the most unintuitive for developers to write unit tests against it. Check out the linked article below to find out how to write unit tests for your networking piece of your code.

Check out this insightful article linked below to find out how to write unit tests for your networking piece of your code.

Source: The complete guide to Network Unit Testing in Swift

App Store: Are app reviews worth reading?

App reviews are highly opinion based and not fact based and normally not a great way to gauge if an app is good or bad. They sure can be helpful (for a developer), but most reviews are composed of biased rants and half-legible reviews which are hard to sift through. Sadly, most people judge an app just by looking at the app’s review scores even though it does not actually reflect the quality of an app.

People want to be heard, and giving a 1-star or 5-star rating adds oomph to your opinion.

Check out this fantastic article by John Saito who has sifted through 1000’s of app reviews to provide his take on app store reviews. Quote from the article:

After crunching the numbers, I found that over 70% of our app reviews were either 5-star or 1-star reviews. Over two-thirds of reviewers either loved or hated our app.

Source: Are app reviews worth reading? – Dropbox Design – Medium

iOS 11: Location Permissions and avoiding the Blue Bar of Shame!

Apple has always been known to be a flag bearer for user privacy and the evidence for it is now even clearer with iOS 11. With iOS 11 if an app collects location data in the background, then a big ugly flashing blue bar shows up over the status bar.

If you have an app or planning to develop one that continuously scans user location, then check out the article linked below that details how to avoid it.


Source: Location Permissions in iOS 11 and avoiding the Blue Bar of Shame

Refactoring: How to deal with technical debt and save your sanity!

Refactoring code may not have any innate business value ( an exception being small performance optimization) and your business won’t immediately get better once refactoring is done. But refactoring is an essential part of software development and frequent refactoring is what keeps the code well oiled to prevent it from going obsolete.

Also, if you are working as part of a team and your team diligently conducts code reviews, then just the fact that your code will be assessed sends signals to the brain making you extra aware to maintain your code clean and keep it well optimized.

An ordered and clean environment, one that is maintained, sends the signal that the area is monitored and that criminal behavior is not tolerated. Conversely, a disordered environment, one that is not maintained (broken windows, graffiti, excessive litter), sends the signal that the area is not monitored and that criminal behavior has little risk of detection.

Check out this article linked below to find out how refactoring can greatly reduce your technical debt.

Source: How to deal with technical debt and save your sanity

NSObject: The Inheritance Curse!

Here is an article that provides a whimsical take on the evil that is NSObject. If you use classes that inherit from UIKit classes then you directly or indirectly inherit from NSObject.

There are ways to stop this inheritance madness in your classes by marking them as final so it cannot be subclassed. It allows some compiler optimizations, and also makes the code more consistent by removing features that can be achieved in a more Swifty way like code reuse with protocol extensions, generics or composition and polymorphism with protocols.

Read on at the link below to find out more tips:

Source: The Inheritance Curse – Swift Programming – Medium

Why App Preview Videos Are Vital in iOS 11!

With iOS 11, Apple is planning to introduce a slew of exciting new changes to the App Store and one big feature that stands out is auto playing app preview videos.  Video previews will become extremely vital for developers going forward given how prominently placed app video previews are in the app store and well they portray the capabilities of your app (compared to plain screenshots). Also, if your app listing doesn’t have preview videos they will stand out like a sore thumb.

Check out this excellent article that covers in depth the benefits of including app preview videos in your app listing and some great tips.

Source: Why App Preview Videos Are Vital in iOS 11 | App Launch Map

Why Core ML will not work for your app!

If you have been lassoed into the recent buzz surrounding Machine learning and are intrigued by Apple’s Core ML Framework you should read the article linked below before you start coding your next big app. While Core ML could work perfectly for a particular app, it doesn’t mean it will fit the needs of the app you are planning on building.

Core ML has many limitations and could mean a show stopper for many. Before you venture into the deep end, read the article below:

Source: Why Core ML will not work for your app (most likely)

Tutorial: Getting Started with Vision on iOS 11!

Apple introduced Core ML the new machine learning framework at WWDC 2017 and included with it is a new vision framework providing high-performance computer vision features for tasks such as image and face detection.

Check out this starter tutorial from Jeffrey Bergier who shows you how to get started with the Vision framework and perform object detection on a live video feed.

Source: GitHub – jeffreybergier/Blog-Getting-Started-with-VisionS 11

Server Side Swift vs. The Other Guys

The battle for the best server-side framework is just getting started, and Vapor which is a server side framework implemented using pure Swift is giving the big guys a run for their money.

Vapor surprised us with how close it got to Go. The pure Swift HTTP server Vapor uses is thread based where as Go uses coroutines. Coroutines can be a lot faster but require additional libraries and setup. Its possible Vapor could adopt this type of parallelism in the future. (Read more about threads vs. coroutines in the code section).

Additionally, Swift on Linux is still beta and compiles with unoptimized toolchains. As the compiler nears production in the coming months, Swift has the possibility to dethrone Go.

Source: Server Side Swift vs. The Other Guys 

Tutorial: Introduction to MVVM in Swift 3 With Code!

In recent times the MVC (model-view-controller) design pattern has lost its place as a de facto pattern ever since better architectural patterns have come to light.  MVC is now infamously called a Massive(or Messy)-View-Controller pattern, the reason for that is it’s very easy to pile up 1000+ lines of code inside a View controller. Even Apple is famous for shying away from following the MVC pattern in their sample code. MVVM (model-view-viewModel) is an architecture pattern that is an alternative to MVC which makes it easier to further isolate the UI specific responsibility of a ViewController to a View Model.

If you are new to MVVM and want to know more about how to implement one, then check out this great in-depth article by Erica Millado linked below.

Source: Dabbling with MVVM in Swift 3