2010-02-07 1 views
0

Я разбираю файл данных и добавляю ключ-значение, считанное из файла, в NSMutableDictionary.NSMutableDictionary иногда показывает значение или ключ с кавычками

Я заметил, что когда я распечатать содержимое словаря в отладчике, то есть: ро MyDictionary

некоторые элементы имеют кавычки вокруг них, а некоторые нет. Почему это?

Например, я вижу:

{ 
    "file_path"  = "../dat.txt" 
    another_path  = "aa.dat" 
    yet_another_path = bb.txt 
} 

Я использую следующую строку, чтобы извлечь ключ и значение из файла, после разбора данных сводятся только к существенным байтам

key_str = [[NSString alloc] initWithBytes:[data bytes] 
            length:total_bytes 
           encoding:NSUTF8StringEncoding]; 

val_str анализируется одинаково.

Спасибо

+0

Какой отладчик (включая версию) вы используете? При запуске с помощью GNU gdb 6.3.50-20050815 (версия, которая поставляется с XCode 3.2.1) из командной строки все ключи и значения, которые я вижу, имеют двойные кавычки. – outis

+0

Да ... «bb.txt» будет процитирован. Отладчик, кстати, абсолютно не имеет никакого отношения к формату. Строка полностью генерируется в рамках системы. – bbum

+0

Возможный дубликат [NSMutableDictionary добавляет кавычки к ключам и значениям - почему?] (Http://stackoverflow.com/questions/2471398/nsmutabledictionary-is-adding-quotes-to-keys-and-values-why) – Apurv

ответ

1

Вы не должны использовать выход из -debugDescription или -description методов для целей архивирования данных. Формат представляет собой деталь реализации и может быть изменен.

Я предлагаю вам посмотреть NSPropertyListSerialization (и связанные с этим), чтобы решить ваши архивные задачи. Он предлагает формат XML, если вам нужно что-то похожее на человеческую читаемость.

+0

Спасибо для ответов sofar. Я использую gdb 6.3.50-20050815 на Mac. Проблема заключается в том, что кавычки на самом деле заканчиваются как часть ключа. Итак, в опубликованном примере: po [myDictionary objectForKey: @ "file_path"] это не удается, потому что «file_path» имеет кавычки вокруг них в словаре. Я не знаю, как туда попали котировки. Вот что я хотел бы выяснить и избавиться. – 2010-02-09 22:54:12

+0

Я не могу сказать этого достаточно: ** Не используйте -debugDescription или -description для генерации ваших ключей. ** Эти методы не предназначены для каких-либо других целей, кроме как в качестве инструмента для отладки – bbum

+0

Не думаю, что я ясно сообщил первый раз. Поэтому я не генерирую свои ключи от отладчика; Я читаю их из файла данных, содержащего пару «имя переменной» - «значение». Я только показываю вывод отладки в качестве дополнительной информации для этой дискуссии. Итак, «key_str» вот что я разбирал из файла данных. – 2010-02-10 08:58:33

0

У меня такая же проблема. Кажется, что проблема заключается в том, что парсер JSON помещает кавычки вокруг клавиш, которые содержат символ подчеркивания. Таким образом, ключ имени файла одобрен, но ключ с именем file_name возвращается как «имя_файла».