Note: I'm replacing my original answer with one that's actually correct for this problem. Sorry for the initial misunderstanding.
The following line will unescape the html entities in your string.
NSString *A = @"Valore Books";
NSString *B = (NSString *)CFXMLCreateStringByUnescapingEntities(NULL, (CFStringRef)A, NULL);
I couldn't find any equivalent function that was higher level, but the performance of this should be excellent. If I read the docs correctly, you can pass in a CFDictionaryRef as the third argument to specify extra conversions, but it seems that this does a good job doing standard ones on it's own.
Docs are here.
Note that it's probably a good idea to handle the encoding whereever you're pulling those strings into your program at, and not everytime you're comparing.
Also found a second part of this you need to consider.   isn't just a space, it's a non breaking space, which the above code converts to \312 instead of the standard space. Those are in fact separate characters in the encoding and when you do a string compare it will fail.
Maybe it'd be easiest to replace #160 with #32 using
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
and then running it through the unescape.
It also just occurred to me that the CFXMLCreateStringByUnescapingEntities
won't be available on the iphone. Here is a link to an example that shows how to do similar conversions on the iphone.