-(void)messageSend:(NSString *)message;
{
NSLog(@"messageSend");
urlString = [[NSString alloc] initWithFormat:@"http://someaddress/message/send?from=%@&msg=%@&latitude=0&longitude=0",appDelegate.userName,message];
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithDictionary:[self request:urlString]];
NSLog(@"Dictionary response");
if ([dictionary count] > 0)
{
if ([[dictionary objectForKey:@"send"] isEqualToString:@"OK"] )
{
NSLog(@"envio de mensagem de %@ Ok: %@",appDelegate.userName,message);
}
}
[urlString release];
[dictionary release];
}
Gives an error of -[__NSArrayM getObjects:andKeys:]: unrecognized selector sent to instance. After some testing with NSLogs, the line
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithDictionary:[self request:urlString]];
is the culprit, witch is calling this method:
-(NSDictionary *)request:(NSString *)requestString
{
url =[[NSURL alloc] initWithString:requestString];
request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
error = [[NSError alloc] init];
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
[responseData retain];
NSString *tempString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSMutableDictionary *tempDict= [[[NSMutableDictionary alloc] init] autorelease];
if (request)
{
Parser *parser = [[Parser alloc] init];
tempDict = [parser readXMLString:tempString];
for (id key in tempDict)
{
NSLog(@"%@ is %@",key,[tempDict objectForKey:key]);
}
}
[url release];
[error release];
[responseData release];
[tempString release];
return tempDict;
}
And it happens when the string of the message has spaces.
But it was not happening before.
The culprit is the line
tempDict = [parser readXMLString:tempString]. In fact, this means your previous creation of a[[[NSMutableDictionary alloc] init] autorelease]is pointless, as it will just be overwritten by the return value of[parser readXMLString:tempString]. In any case, it appears the-readXMLString:method is returning anNSArrayinstead of anNSDictionary.