As of iOS5, NSMetadataQuery 's search scope can only be set to ubiquitous things (NSMetadataQueryUbiquitousDocumentsScope and NSMetadataQueryUbiquitousDataScope) so using it with iCloud disabled would be unuseful.

As you are probably guessing the reason queryDidFinishGathering is never called is because of your query scope, local directories are not supported yet (but suspiciously not throwing exceptions or errors :) )

In my opinion NSMetadataQuery class is not fully ported to iOS, in OSX more scopes can be set , more kinds of NSPredicate can be set, NSSortDescriptors work, etc.