NSDictionary中的奇怪值



我得到了一个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;
    };
}
)

问题是currentOrder不是字典,而是包含字典的NSArray。接下来的失败是,您使用的是valueForKey:,它是键值编码家族的一部分,而不是字典的指定访问方法(即objectForKey:),因此数组会返回一个筛选后的数组。。。

当您在调试器中打印出数组或字典的值时,调试器会包含额外的方括号、大括号等,以便您可以查看所询问的结构的布局。

如果调试器显示类似的数组内容

(
    "Foobar"
)

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

换一种方式:阅读调试器在打印值时所做的操作。这里和网上有很多资源。例如:使用GDB调试:命令、打印和打印对象简介

最新更新