【问题标题】:Add Array Multiple Objects to [Any] in Swift 3 [duplicate]在 Swift 3 中将数组多个对象添加到 [Any] [重复]
【发布时间】:2017-02-21 00:04:43
【问题描述】:

我试图了解将多个不同类型的对象添加到 [Any] 数组的最佳方法。这在 Swift 3 的 Playground 中不起作用,除非我将数组和数组中的对象显式转换为 Any

var anyArray: [Any] = []
let strings = ["sup", "cool"]
let numbers = [5, 3]
anyArray += strings
anyArray += numbers
anyArray

失败并显示消息 - 无法将类型“[Any]”的值转换为预期的参数类型“inout _”

【问题讨论】:

  • inout 错误与 swift 中的指针和引用类型有关...您可以发布您尝试执行此操作的整个方法吗?
  • @MSU_Bulldog 这是整个代码 - 它在操场上。
  • @Alex 您需要将数组的类型显式指定为AnyObjectanyArray += strings as [AnyObject]
  • 帖子中被标记为重复的答案是我正在寻找的答案,并且是我问题的正确答案 - 谢谢。

标签: swift swift3


【解决方案1】:
    var arr = [Any]()
    let arr1:[Any] = [2,3,4]
    let arr2:[Any] = ["32","31"]
    arr += arr1
    arr += arr2
    print(arr)

【讨论】:

  • 所以错误来自尝试添加[Any][String]?
  • 这真的很奇怪 - 我已经尝试过了,自动完成向我建议 contentsOf:,但是编译器说'无关参数标签内容:' - 作为一个错误,所以我什至不能用这个编译。我在 Xcode 8.2.1
  • 确保将数组显式转换为 [Any],否则编译器将抛出“无关参数标签”片段
  • 一旦将arr1arr2 的类型声明为[Any],就可以使用arr += arr1(或在OP 的示例中为anyArray += strings)。不需要append(contentsOf:)
  • 进行了修改以匹配 += 语法
【解决方案2】:

我认为这是另一个来自 Swift 编译器的无用错误消息。真正的问题是AnyObject 表示任何object(引用类型);结构——IntString 都是——不计算在内,因为它们是值类型。如果您想引用任何类型,请使用Any

【讨论】:

  • 啊,很公平,但这并不能解决问题,错误消息只是更改为 [Any] 而不是 [AnyObject]
猜你喜欢
  • 2013-01-03
  • 2022-01-05
  • 2014-03-17
  • 1970-01-01
  • 2014-04-21
  • 2014-06-04
  • 1970-01-01
  • 2014-08-29
相关资源
最近更新 更多