Over the last couple of years, I realised that good tools will make your life easier and I mean a lot easier. iOS developed a lot and XCode got a lot better. Still most iOS developers nurture a love hate relationship.
Yes it crashes and it crashes more often than it should, but it still evolved in a very positive way.
However there is only so much XCode can do and good tools are a worthwhile extension of your workflow.
I want to share with you a number of tools I find invaluable for my daily work.
Little sidenote: I know that tools are a bit like coding styles.
Everybody swears their one is the best. So I am gonna list alternatives as well.
You should try which one works best for you!
Do you remember still remember how painful it was to deploy a test version to potential testers? Packing that IPA, sending it to someone, having them import it into iTunes and then sync it… A really pain in the butt.
Luckily there is TestFlight. This tool has made my life so much easier and I can’t thank those guys enough for creating a convenient way to deploy to my testers and even trace resting and debug applications.
Testflight lets you invite testers to their portal, lets them register their devices and offers a neat way of deploying your test builds to groups of testers through either a Desktop Client, Web interface or even through a shell script in Xcode.
I would not want to miss this one, since I deploy nearly daily during the first few weeks and on a weely basis later in the development process. That way the development process stays transparent and you make sure that the app is not heading into the wrong direction.
Testflight ensures that deploying is actually fun!
Debugging the UI can be a gnarly business, since you can not visually debug the UIView hierarchy in XCode.
So you end up NSLogging the properties and from time to time just color views, that are suppose to be transparent in order to determine whether they actually made it “on stage”.
Spark Inspector is a darling for UI Debugging. You just need to select your project and it will add a framework to it in order to see the whole View hierarchy in the Spark Inspector application. You can select views, view their properties and even change them while the app is being run.
I repeat: You can change the properties while the app is being executed and
see how much you need to shift a view to the left, for instance. It’s the web developer toolbar for iOS developers.
A lot of my apps use Core Data, either for caching purposes or to hold necessary data for the use of the specific app.
With Core Data however it is quite uncomfortable to debug the database, since the SQLite file holds a lot of Core Data meta data and you have a hard time connecting all the tupels that belong to one specific Core Data object. Also you need to go through the tables to figure out which data made it into the DB and which data was not correctly written.
The Core Data Editor makes this process a lot easier. You just supply your project file and the location of your SQLite file in the simulator directory and it is showing you all the Entities and their connections. It is also an excellent tool, if you quickly want to input seed data for testing purposes.
Love it, don’t want to miss it anymore.
Link: Core Data Editor
Alternatives: None known.
Translating an app is in theory very easy NSLocalizedString(@”translate”,@”explain string”) and that’s it.
However generating the .strings file for your project is a totally different story. There is a very useful thread on stackoverflow explaining how to do it through the Terminal:
Still you will always and up generating a new .strings file, where all the strings need to be translated again. If you add a few new strings for a new version, the old translations get lost and you are screwed:
Meaning you have to merge the old file (already translated strings) with the new file (already translated strings + not translated strings).
This is definitely doable, but you wants to do that boilerplate work, right?
LocalizableStringMerge does that for you. You point to your projects and it automatically searches for all translatable strings (NSLocalizedStrings) and puts them into your strings file. Merging is as easy as that as well. Once this is done, you can give them to a translator or translate them yourself. If you add some more strings, it takes the current strings file and just merges the new NSLocalizedStrings into it.
Man, when I found that tool I was nearly peeing my pants of excitement (I hate boilerplate, monkey work!!).
Link: Localizable String Merge
Alternatives: None known.
If your app communicates with a server you probably know how cumbersome request debugging can be. Was it my fault, or did the server side fail?
Charles is a so-called debugging proxy which logs all the request going out from your mac to servers (also a good way to check, what else is communicating on your mac ).
You can track the request, headers of your requests, response, cookies, the raw request and it even offers a tree representation of JSON responses.
I personally started using Charles when I was still in the web development business and worked with flash developers (Yes, flash used to be popular). After that I didn’t use it for
a couple of years until I rediscovered it for iOS development.
An absolute must, if you want to debug your API communication.
I personally don’t like the XCode Git Client, since it does not really do much and does not visualise my repository well enough.
A very good alternative to the internal XCode Git Client is Tower. If you don’t want to work as a full time GIT Terminal Hero, but have better stuff to do with your time, Tower is a good pick.
It can pretty much do everything you need for your daily GIT work and I hardly stumble upon something, that I need to take to the Terminal.
Last but not least, a tool that I really don’t use daily: Status Magic. However it comes in really handy when you want to give your App Store presentation the finishing touch.
Status Magic lets you change properties of the iOS status bar to get rid of 67% battery power or the nasty edge symbol. It also lets you change your provider symbol and the time and …
It’s really worthwhile trying and makes your app screenshots a lot prettier.
Link: Status Magic
Alternatives: None Know – Although you could get it done with Photoshop
If you want to work in an efficient manner, good tools are indispensable. These are the once I like best and that I use for my daily work. Let me know, if you use any others to get the best out of your day!