I came to it as a mostly Python/embedded C/C++ developer, and learned by translating ObjC examples to Swift. The Apple docs are pretty good, and for anything I couldn't find in the docs I searched for an ObjC example, often on StackOverflow. The most difficult part for me was working around the sandboxing restrictions, particularly for starting an app on login (after trying different approaches I learned that it requires a secondary helper app and a simple call to SMLoginItemSetEnabled() ).