【问题标题】:How to add values from an array as an object in a mutable dictionary with objective-c?如何使用objective-c将数组中的值作为对象添加到可变字典中?
【发布时间】:2017-03-30 18:14:28
【问题描述】:

我正处于学习如何编码的初级阶段,我正试图找出一个问题。我创建了一个包含 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"];

感谢您的帮助!

【问题讨论】:

  • 你已经非常接近了。从四行中的每一行中的setObject: @[ 中删除@。它应该可以工作。

标签: objective-c arrays dictionary


【解决方案1】:

当您问这样的问题时,您已经尝试过某事并且编译器“返回错误”,您通常应该显示错误。它可以帮助我们帮助您。

也就是说,这种情况下的问题是以下行中的无关“@”字符:

[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"];

[shoeOrder objectAtIndex: 0] 这样的表达式是一个消息发送表达式。它将带有参数0 的消息objectAtIndex: 发送到对象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"];

【讨论】:

  • 请注意,每一行都可以使用 Objective-C 文字语法重写,例如:shoeOrderDict["customer"] = shoeOrder[0]
  • 不应该是:shoeOrderDict[@"customer"] = shoeOrder[0] ?
【解决方案2】:

好吧,请删除@[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"];

....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多