-2

我有一个 NSDictionary,当我对其进行 [currentOrder debugDescription] 调用时,布局如下,然后我执行以下操作:

[currentOrder valueForKey: @"itemOrder"]

它返回有趣的括号为:

(
    "4 X ESPRESSO"
)

它应该只在哪里(不带括号):

4 X EXPRESSO

知道为什么吗?

当前订单的内容:

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"
)

它告诉您该数组有一个元素,一个值为 的字符串Foobar

换一种说法:阅读调试器在打印出值时所做的事情。这里和网络上有很多资源。例如:使用 GDB 进行调试:命令、打印和打印对象简介

于 2012-09-04T19:15:18.787 回答