Archive for December, 2008

Rolando: incredible iPhone game

I don’t usually stop here to recommend applications or games for the iPhone, but I feel I need to take some time and do a review of Rolando, a game that had a lot of hype behind it for a few months, and it is now finally available on the App Store.

I have to give it to Simon Oliver, the guy behind this game. It’s an unbelievably well done game, starting with the beautiful (and playful) graphics and in-game story, all the way to the innovations in game control that allow for a great user interaction experience. The sound effects and music for the game are also top notch. I mean, I’m now at a point where I open the game and load a specific level of the game and just listen to the soundtrack.

This game is now the standard bearer for iPhone games, it’s just that good. The $9.99 price is completely deserved, and I recommend it to anyone.

Video trailers and screenshots are available from the Rolando website.

Book review: Beginning iPhone Development

I have been going through this book for the past few weeks, and so far it’s the best book around for developers beginning with Objective-C and the iPhone SDK. The writing is natural (and that’s hard to find these days), detailed and sometimes funny in a quirky way. I appreciate the fact that they use lots of screenshots to explain the interactions with Interface Builder and Xcode.

They have Chapter 3 (Handling Basic Interaction) available for free online if you would like to read a sample of the book. Highly recommended.

You may also like to follow Jeff LaMarche’s blog, one of the co-authors of this book.

iPhone SDK: Parsing JSON data

So when developing for the iPhone with the official SDK, and trying to parse JSON data, there are a few options for JSON libraries to use:

  • json-framework – General purpose JSON library for Objective-C, but contains a custom SDK that was built to be easily bundled with iPhone app projects.
  • TouchJSON – Part of the TouchCode, a project of a bunch of classes that are targetted for iPhone development, so it’s deemed to be a very light and fast library.
  • Maybe more? Let me know in the comments area.

Both are very under-documented (I mean, SERIOUSLY), but if you poke at them long enough, things will start making sense. I personally chose to use json-framework, as I initially had a few problems figuring out how to parse JSON content that had an array as the root object. Apparently TouchJSON officially only supports JSON results serialized as a object in the root level. As in:

{"values": ["value1", "value2", "value3"]}

Instead of:

["value1", "value2", "value3"]

That’s usually not a big deal, as you can just change the way you generate the JSON result in your server side code (if you are dealing with web services returning the JSON data), but what happens if you already have code expecting the server side to return that type of result?

Either way, I’m going to provide a simple usage example of json-framework to parse a JSON string. In order to install json-framework, you should follow the simple instructions available in its INSTALL file.

NSString *jsonString = @"[\"value1\", \"value2\", \"value3\"]";
SBJSON *json = [[SBJSON alloc] init];
NSError *error = nil;
NSArray *results = [json objectWithString:jsonString error:&error];
[json release];

For my particular application, I was fetching the JSON string from a web service, and it was coming up as a NSData object, so I had to do the following:

NSString *jsonString = [[NSString alloc] initWithData:resourceData encoding:NSUTF8StringEncoding];
SBJSON *json = [[SBJSON alloc] init];
NSError *error = nil;
NSArray *results = [json objectWithString:jsonString error:&error];
[json release];
[jsonString release];

Hopefully this is useful to someone else.

Xcode keyboard tricks

I’m mostly a keyboard navigation type of user, so it’s been a few busy months trying to remember all of the different little tricks in Xcode while doing Objective-C work.

A few of my favorites:

  • ⌘ + l (lowercase L) – if done within a text editor pane, it will re-center the editor around the line that the cursor is currently in. Too confusing? Try this video demonstration from Todd Ditchendorf then.
  • ⌘ + option + up arrow – switches between header (.h) and implementation (.m) files.
  • ⌘ + b – builds project.
  • ⌘ + r – build and run project.
  • If you hold down the alt/option key, and then double click on a code token, such as a class name or function name, it will automatically search the documentation for that particular word. Very useful when you want to read some more about the UITableView class, for instance.
  • A similar trick is available if you would like to open the definition for a particular code token, such as the source code file where class ExampleController is defined. Just hold down the command key (⌘), and double click the word.