2015-10-04 3 views
3

Описание печати в xcode 7 дает адреса памяти, подобные приведенным ниже. Пробовал все варианты, но получал выход вроде этого. Пожалуйста, дайте мне знать, как печатать точное значение словаря.XCode 7 ключи для печати и значения словаря

▿ 3 elements 
    ▿ [0] : 2 elements 
    - .0 : Output 
    ▿ .1 : 3 elements 
     ▿ [0] : 2 elements 
     - .0 : type 
     - .1 : Output2 { ... } 
     ▿ [1] : 2 elements 
     - .0 : version 
     - .1 : 1.0 
     ▿ [2] : 2 elements 
     - .0 : content 
     ▿ .1 : 2 elements 

Не знаю, почему Яблоко 100% концентрируясь на консольном окне .. есть переход от XCode 5 до 6, от 6 до 6,2, 6,2 до 6,4, а теперь 6,4 до 7 .. Я думаю, что Apple, следует сосредоточиться на улучшении качество вместо консоли)

ответ

2

Я создал этот тест словарь:

let dict:Dictionary = ["key1": "value1", "key2": 42, "keyForColor": UIColor.redColor()] 

Тогда я использовал po dict и получить результат вы описали:

po dict 
▿ 3 elements 
    ▿ [0] : 2 elements 
    - .0 : "key1" 
    - .1 : value1 
    ▿ [1] : 2 elements 
    - .0 : "keyForColor" 
    ▿ [2] : 2 elements 
    - .0 : "key2" 

При использовании po dict.description, вы получите это:

po dict.description 
"[\"key1\": value1, \"keyForColor\": UIDeviceRGBColorSpace 1 0 0 1, \"key2\": 42]" 
+0

по сравнению с печатью словарей в Xcode 6, это нечитаемым. Даже с 'po dict.description'. Нет ли обходного пути? – gpichler

+0

@ user1463853 У меня нет Xcode6. что вам нужно как «приемлемая» распечатка ?. какая информация отсутствует? – user3441734

+0

@ user1463853 просто используйте repl dump (dict), чтобы лучше изучить тот же самый dict – user3441734

0

Как прослеживание на @ user3441734, вы можете просто получить последнюю часть с помощью p вместо po:

(lldb) p dict 
([String : NSObject]) $R1 = 3 key/value pairs { 
    [0] = (key = "key1", value = "value1") 
    [1] = (key = "keyForColor", value = 0x00007f9c42d3aab0) 
    [2] = (key = "key2", value = Int64(42)) 
} 

Если это не соответствует вашим потребностям, вы всегда можете написать расширение словаря и создать собственное описание, что-то в строке:

extension Dictionary { 

    var fancyDescription: String { 
     var description = "" 
     for (key, value) in self { 
      description += "\(key) : \(value), " 
     } 
     return "{ \(description) }" 
    } 
} 

и использовать его с po dict.fancyDescription

+0

проверить мой ответ – user3441734

3

Попробуйте с CFShow:

Печатает описание объекта ядра фонда в STDERR.

po CFShow(dict) 
1
<command-name>'. 
(lldb) repl dump(dict) 
▿ 3 key/value pairs 
    ▿ [0]: (2 elements) 
    - .0: key1 
    ▿ .1: Swift._NSContiguousString #0 
     ▿ super: Swift._SwiftNativeNSString 
     ▿ super: value1 
      ▿ NSString: value1 
      - NSObject: value1 
     ▿ _core: Swift._StringCore 
     ▿ _baseAddress: Swift.COpaquePointer 
      - _rawValue: (Opaque Value) 
     - _countAndFlags: 6 
     - _owner: nil 
    ▿ [1]: (2 elements) 
    - .0: keyForColor 
    ▿ .1: UIDeviceRGBColorSpace 1 0 0 1 #1 
     ▿ UIDeviceRGBColor: UIDeviceRGBColorSpace 1 0 0 1 
     ▿ UIColor: UIDeviceRGBColorSpace 1 0 0 1 
      - NSObject: UIDeviceRGBColorSpace 1 0 0 1 
    ▿ [2]: (2 elements) 
    - .0: key2 
    ▿ .1: 42 #2 
     ▿ NSNumber: 42 
     ▿ NSValue: 42 
      - NSObject: 42 
([String : NSObject]) $R1 = 3 key/value pairs { 
    [0] = (key = "key1", value = "value1") 
    [1] = (key = "keyForColor", value = 0x00007f9c42d3aab0) 
    [2] = (key = "key2", value = Int64(42)) 
} 
Смежные вопросы