如何使用objective-c将数组中的值作为对象添加到可变字典中?

时间:2017-03-30 18:14:28

标签: objective-c arrays dictionary

我正处于学习如何编码的开始阶段,而我正试图找出问题所在。我创建了一个包含4个对象的数组,然后创建了一个空的可变字典。现在我必须将我的数组中的值添加为我的可变字典中的对象,我无法弄清楚如何做到这一点。这就是我想出的错误,我知道它只是简单的语法,但我无法在线找到答案。

NSArray *shoeOrder = @[@"Charles Smith", @(9.5), @"loafer", @"brown"];

NSMutableDictionary *shoeOrderDict = [[NSMutableDictionary alloc] init];

[shoeOrderDict setObject: @[shoeOrder objectAtIndex: 0] forKey: @"customer"];
[shoeOrderDict setObject: @[shoeOrder objectAtIndex: 1] forKey: @"size"];
[shoeOrderDict setObject: @[shoeOrder objectAtIndex: 2] forKey: @"style"];
[shoeOrderDict setObject: @[shoeOrder objectAtIndex: 3] forKey: @"color"];

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

当您提出这样的问题时,您已经尝试了某些内容并且编译器"会出现错误",您通常应该显示错误。它可以帮助我们。

那就是说,这个案子的问题是无关紧要的" @"以下行中的字符:

[shoeOrder objectAtIndex: 0]

objectAtIndex:这样的表达式是一个消息发送表达式。它将带有参数0的消息shoeOrder发送到对象@。表达式不需要也不应该有前导[shoeOrderDict setObject: [shoeOrder objectAtIndex: 0] forKey: @"customer"]; [shoeOrderDict setObject: [shoeOrder objectAtIndex: 1] forKey: @"size"]; [shoeOrderDict setObject: [shoeOrder objectAtIndex: 2] forKey: @"style"]; [shoeOrderDict setObject: [shoeOrder objectAtIndex: 3] forKey: @"color"];

所以,你的代码应该是:

        for (int i = 0; i != amount.Length; i++)
    {
        if (amount[i] > 0)
        {
            string button = "Button" + i;
            Button[i].Visible = true;

        }
    }

答案 1 :(得分:0)

好吧,请在@ [shoeOrder objectAtIndex:0]中删除@。 ....

[shoeOrderDict setObject:[shoeOrder objectAtIndex: 0] forKey: @"customer"];
[shoeOrderDict setObject:[shoeOrder objectAtIndex: 1] forKey: @"size"];
[shoeOrderDict setObject:[shoeOrder objectAtIndex: 2] forKey: @"style"];
[shoeOrderDict setObject:[shoeOrder objectAtIndex: 3] forKey: @"color"];

...