The more i think about it, the more i think golang approach is the right one : the only hard part today is concurrency. As long as swift ( and rust for that matter) hasn't standardized patterns that people would use on the whole stack for concurrent access to ressources,as well as asynchronicity, they won't have made the necessary step to truely advance the state of the art.
EOF is not Core Data and Core Data is not from the NeXT era.
GCD isn't much more than a low level job launching and scheduling library. It doesn't provide advanced patterns for resource sharing.
Concurrency goes further than parallelism, it's also a way to manage concurrent memory access (although golang does let you shoot yourself in the foot if you want to with low level mutexes as well). There's a great talk from rob pike on the subject http://blog.golang.org/concurrency-is-not-parallelism