我得到了一个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调试:命令、打印和打印对象简介