I am currently working on porting all my apps to iOS. I have finally finished around 95% of the first one. Fortunately, most of the apps share the same core, so I hope the rest will be really easy now that I have done one.
However, I am still frustrated by how unintuitive the Xcode IDE can be. One example of this is when you accidentally define something multiple times in various files. The IDE then cannot build the project and gives you an error saying that there are "multiple declarations of XXX". This is not helpful at all. If you're lucky, you might get the name of the file where the compiler/linker found the duplicate. Unfortunately, in most cases, this file is the file where the declaration should be, but you cannot really find the unintended declaration. So you have to find it yourself. Why?
Another issue I faced a few hours ago, which I then gave up on, was that the current build of the code started to crash the application right after running, without any changes. I tried reverting through many commits in the Git history and cleaning caches, but nothing helped. The app always crashed and I always got a completely generic error that, based on information from Google, should mean accessing the wrong part of memory. The IDE is so great that it shows you exactly where the problem is. It opens a bytecode compilation of millions of lines, shows you a "random" line and highlights a "random" byte, telling you that the problem is there. Well done, Apple. I spent hours trying to solve this issue. And the solution? I created a clean project, copied all the source files into it, compiled it, and it ran on the first try without any problems.
So yes, programming in Swift in Xcode is possibly the biggest programming challenge I have ever experienced.
Jan "Jenkings" Škoda - blog
Simplifying IT, Amplifying Knowledge