Use @synchronize rather than a manual locking mechanism.
Tidy up some formatting. Modernize some of the array handling, and include an NSLog to spit out the data when we get back a bad return value from a soap request.
Add support for the refID attribute. XBMC uses this as a universally unique ID. The ID field on an item is unique within a container, but if you're looking for a universally unique one, don't use the objectID.