2015-01-08 6 views
0

При отладке в Swift у меня возникают проблемы с чтением переменных. В этом примере я пытаюсь распечатать значение объекта info, возвращающегося с устройства выбора изображений. (см. ссылку на скриншот на dropbox)Как распечатать значение словаря в xcode 6.1.1

Использование println, как вы можете видеть на снимке экрана 19, отлично работает. Он выводит на выходе первый блок материала.

После этого я попытался сделать po info, а также выделить переменную и щелкнуть глазом, чтобы напечатать описание. Оба из них напечатали пустой {}, который не имеет для меня смысла, поскольку там явно есть вещи.

Итак, мой вопрос: есть ли команда lldb или простой способ просмотреть/распечатать значения переменных - против пустого {} Я нахожу, что не могу последовательно наблюдать значения моих переменных, которые расстраивают.

https://dl.dropboxusercontent.com/u/45836281/debug.png

+0

LLDB отладчик довольно плохо работает на Swift в общем и локальных переменных и параметров в частности. Ты мало что можешь сделать; то, что вы уже делаете (println), часто является лучшим решением. - Вы можете попробовать загрузить Xcode 6.2 beta, так как я чувствую, что это немного лучше. – matt

+0

Я загрузил бета-версию 6.2 и все еще ту же проблему. В любом случае, спасибо, что сообщили мне о состоянии lldb на XCode. –

+0

Я не могу воспроизвести проблему _exact_, но LLDB очень плохо отображает словарь (т. Е. Бесполезно) на моей машине. – matt

ответ

13

Обход ограничений lldb (пример):

(lldb) p println(countryHash!) 

Выходной пример:

[botswana: bw, united states minor outlying islands: um, isle of man: im, czech republic: cz, mauritius: mu, jersey: je, maldives: mv, uruguay: uy, barbados: bb, serbia: rs, qatar: qa, montenegro: me, grenada: gd, syrian arab republic: sy, samoa: ws, greenland: gl, iraq: iq, malawi: mw, croatia: hr, saint lucia: lc, seychelles: sc, egypt: eg, ... ]

(Примечание: список стран, на самом деле полна в lldb выход, но просто усечен выше, чтобы избежать потери пространства в этом ответе)

+0

Не работает в Swift 3. –

1

в Swift 2 это:

(lldb) p print(dict) 
1

Swift 3

Если вам не нравится lldb по умолчанию reprensentation на, вы также можете:

(lldb) p dictionary.description 
Смежные вопросы