-2

[currentOrder debugDescription] 呼び出しを実行すると、次のようにレイアウトが下に表示される NSDictionary を取得しました。

[currentOrder valueForKey: @"itemOrder"]

次のように括弧を付けて面白いものを返します。

(
    "4 X ESPRESSO"
)

あるべき場所 (括弧なし):

4 X EXPRESSO

理由はありますか?

currentOrder の内容:

currentOrder: <__NSArrayM 0x68426c0>(
{
    extra1Select = 0;
    extra2Select = 0;
    extra3Select = 0;
    itemCost = 58;
    itemOrder = "4 X ESPRESSO";
    itemOrderDescription = "Cookie: YES, Sugar: YES";
    itemQuantity = 4;
    itemRestaurant = VidaECaffe;
    plistItem =     {
        cost = "11.5";
        description = "R11.50";
        extra1 =         {
            desc = Cookie;
            details =             (
                                {
                    cost = "3.00";
                    option1 = YES;
                },
                                {
                    cost = "0.00";
                    option2 = NO;
                }
            );
        };
        extra2 =         {
            desc = Sugar;
            details =             (
                                {
                    cost = "0.00";
                    option1 = YES;
                },
                                {
                    cost = "0.00";
                    option2 = NO;
                }
            );
        };
        itemRestaurant = VidaECaffe;
        level = 1;
        title = ESPRESSO;
    };
}
)
4

2 に答える 2

2

問題は、それが辞書でcurrentOrderはなく、辞書NSArrayを含むことです。次に犯している失敗はvalueForKey:、キー値コーディング ファミリーの一部であり、辞書の指定されたアクセス メソッド (つまりobjectForKey:) ではなく、配列が結果としてフィルター処理された配列を返すことです...

于 2012-09-04T19:10:58.320 に答える
0

デバッガーで配列またはディクショナリの値を出力すると、デバッガーには余分なブラケット、ブレースなどが含まれるため、質問している構造のレイアウトを確認できます。

デバッガーが配列の内容を次のように表示する場合

(
    "Foobar"
)

配列には1つの要素、値を持つ文字列があることを示していますFoobar

まったく別の言い方をすれば、デバッガーが値を出力するときに何をするかを読んでください。これについては、ここと Web にたくさんのリソースがあります。例: GDB を使用したデバッグ: コマンド、印刷、および印刷オブジェクトの紹介

于 2012-09-04T19:15:18.787 に答える