1. ホーム
  2. ios

[解決済み] Swift の辞書をコンソールにきれいに出力する方法はありますか?

2022-10-23 05:56:37

質問

NSDictionary *dictionary = @{@"A" : @"alfa",
                             @"B" : @"bravo",
                             @"C" : @"charlie",
                             @"D" : @"delta",
                             @"E" : @"echo",
                             @"F" : @"foxtrot"};
NSLog(@"%@", dictionary.description);

はコンソールに次のように出力します。

{
    A = alfa;
    B = bravo;
    C = charlie;
    D = delta;
    E = echo;
    F = foxtrot;
}


let dictionary: [String : String] = ["A" : "alfa",
                                     "B" : "bravo",
                                     "C" : "charlie",
                                     "D" : "delta",
                                     "E" : "echo",
                                     "F" : "foxtrot"];
print(dictionary)

はコンソールに次のように出力します。

["B": "bravo", "A": "alfa", "F": "foxtrot", "C": "charlie", "D": "delta", "E": "echo"]

Swiftで、各キーと値のペアが新しい行を占める辞書をきれいに印刷させる方法はありますか?

どのように解決するのですか?

あなたは ダンプ を使うこともできます。例えば、辞書を調べることが目的であれば dump はSwiftの標準ライブラリの一部です。

使用方法

let dictionary: [String : String] = ["A" : "alfa",
                                     "B" : "bravo",
                                     "C" : "charlie",
                                     "D" : "delta",
                                     "E" : "echo",
                                     "F" : "foxtrot"]

dump(dictionary)

出力します。


dump は、反射(ミラーリング)によりオブジェクトの内容を表示します。

配列の詳細表示。

let names = ["Joe", "Jane", "Jim", "Joyce"]
dump(names)

印刷します。

▿ 4つの要素

- [0]: ジョー

- [1]: ジェーン

- [2]: ジム

- [3]: ジョイス

辞書のために

let attributes = ["foo": 10, "bar": 33, "baz": 42]
dump(attributes)

印刷します。

▿ 3つのキーと値のペア

▿ [0]: (2要素)

- .0: バー

- .1: 33

▿ [1]: (2要素)

- .0: バズ

- .1: 42

▿ [2]: (2要素)

- .0: foo

- .1: 10

dump は、次のように宣言されています。 dump(_:name:indent:maxDepth:maxItems:) .

最初のパラメータにはラベルがありません。

他のパラメータもあります。 name のように、検査するオブジェクトのラベルを設定することもできます。

dump(attributes, name: "mirroring")

印刷します。

▿ミラーリング。3つのキー/バリューペア

▿ [0]: (2要素)

- .0: バー

- .1: 33

▿ [1]: (2要素)

- .0: バズ

- .1: 42

▿ [2]: (2要素)

- .0: foo

- .1: 10

また、特定の数だけ印刷するようにするには maxItems: で、ある深さまでのオブジェクトを解析するように maxDepth: で、印刷されたオブジェクトのインデントを変更するには indent: .