Core Data has a popular opinion of being hard to use, especially in concurrent environments. Why is that the case? First, it truly is complex because it solves a hard problem. Second, until WWDC16 Apple haven't really said how to best set up the Core Data stack. There weremanyoptions, each with its own issues, that we had to choose from.
That's why I'm super happy that things get clearer in iOS 10 with the introduction of NSPersistentContainer.
Last night I came across How Elm Slays a UI Antipattern article written by Kris Jenkins. In it the author notices that a common list-based UI can be in one of four separate states: notAsked, loading, failure and success and proceeds to model those states explicitly as a sum type.
According to Kris, this approach works well in Elm giving compile-type safety to this common source of UI confusion. Let's see if this approach will fit the stateful world of UIKit by using it for a view based on UITableView.
I know what you're thinking after reading the title. Is Core Data really THAT complicated to need a whole article about working with a single managed object? Well, it sure looks so if you want to do it well.
A couple of days ago, at its I/O conference, Google introduced Android Instant Apps. Long story short, we'll be able to use an app without installing it first.
In Google's example, tapping on a link to BuzzfeedVideo opens, after a short loading time, the native app instead of a website.
To me (and not only me!) this feels like magic future.
As software developers, we spend a surprisingly large amount of time reading code. Robert C. Martin points this out in Clean Code:
Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code.
Reading through the whole codebase is just not practical. When you join a new project, browse through some open source library or just work on a large codebase, search becomes an immensely useful part of your toolkit. So, let's dive in into some hidden 💎 of Xcode's Find Navigator.