【问题标题】:Missing argument arrayLiteral in call调用中缺少参数 arrayLiteral
【发布时间】:2015-10-13 19:32:07
【问题描述】:

我有一个字典定义为:

var options: Dictionary <String, AnyObject>?

当我尝试打电话时

Array(options?.keys)

我收到此错误:

调用中缺少参数标签“arrayLiteral:”

如何从字典中取出键?

【问题讨论】:

    标签: arrays swift dictionary swift2


    【解决方案1】:

    Swift 中的对象构造函数(即init()s)需要为每个参数命名,因此您需要调用Array(arrayLiteral: options?.keys)。不过,您可能必须解开可选的包装。

    【讨论】:

    • 在这种情况下,有带有 empty 外部参数名称的 init 方法,我不知道您会明确使用 arrayLiteral: 的任何合理情况。 – 你的最后一句话是正确的,即Array(options!.keys)
    • 马丁 R 明白了。 NRitH,arrayLiteral 还有一个额外的错误。
    【解决方案2】:

    一个答案是您传递给它一个可选值而不是常规/非可选值。

    这行得通:

    var options: Dictionary <String, AnyObject>?
    Array(options!.keys)
    

    不过,还有更多。在我自己的另一个案例中,我在从自定义对象的文字数组创建集合时看到了这个错误,但只是在我将自定义对象更改为不继承自 NSObject 之后。

    情节变厚了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多