Escape-символы в NSMutableDictionary - PullRequest
0 голосов
/ 28 апреля 2011

Когда я передаю NSString как объект для ключа в NSMutableDictionary, он, кажется, содержит управляющие символы как обычные символы. Как я могу удалить их? Я пробовал stringByReplacingOccurferencesOfString: @ "\" withString: @ "", но это не работает.

Вот мой код и вывод:

Код:

NSString* fql1 = [NSString stringWithFormat:@"SELECT page_id FROM place WHERE distance(latitude,longitude,\"%@\",\"%@\") < 1500 AND checkin_count > 5", latitude, longitude];
    NSString* fql2 = [NSString stringWithFormat:@"SELECT author_uid, post_id, timestamp, tagged_uids, message FROM checkin WHERE page_id IN (select page_id from #PlaceQuery)"];
    NSString* fql = [[NSString stringWithFormat:@"{\"PlaceQuery\":\"%@\",\"CheckInQuery\":\"%@\"}",fql1,fql2] stringByReplacingOccurrencesOfString:@"\\" withString:@""];


NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObject:fql forKey:@"queries"];

NSLog(@"%@", fql);
NSLog(@"%@", params);

Вывод из NSLog (@ "% @", fql):

{"PlaceQuery": "SELECT page_id ОТ места WHERE расстояние (широта, долгота," 37.331693 "," - 122.030457 ") <1500 AND checkin_count> 5", "CheckInQuery": "SELECT author_uid, post_id, отметка времени, tagged_uids , сообщение ОТ проверки ГДЕ page_id IN (выберите page_id из #PlaceQuery) "}

Вывод из NSLog (@ "% @", params):

{ query = "{\" PlaceQuery \ ": \" ВЫБЕРИТЕ page_id ОТ МЕСТА ГДЕ расстояние (широта, долгота, \ "37.331693 \", \ "- 122.030457 \") <1500 AND checkin_count> 5 \ ", \" CheckInQuery \ " : \ "ВЫБРАТЬ author_uid, post_id, timestamp, tagged_uids, сообщение ОТ проверки, ГДЕ page_id IN (выберите page_id из #PlaceQuery) \"} "; }

Я часами искал решение, так что большое спасибо заранее;)

Ответы [ 2 ]

0 голосов
/ 10 июля 2011

Это оказалось проблемой с разрешениями ... да, смущает ... Меня смутило то, что экранирующие символы были в выводе ответа ...

Спасибо @williham и @ nielsbot

0 голосов
/ 28 апреля 2011

NSLog экранирует строки, когда они распечатаны - у вас, вероятно, на самом деле нет escape-символов в вашей строке.

Попробуйте:

NSLog(@"%s\n", [ string UTF8String ] ) 

и посмотрите, что получится ...

...