在Swift 3中将阵列多个对象添加到[Any]
我试图了解将不同类型的多个对象添加到[Any]
阵列的最佳方法。这在Swift 3的游乐场中不起作用,除非我明确地将数组和阵列中的对象转换为Any
。在Swift 3中将阵列多个对象添加到[Any]
var anyArray: [Any] = []
let strings = ["sup", "cool"]
let numbers = [5, 3]
anyArray += strings
anyArray += numbers
anyArray
它失败的消息 - 无法将类型“[任何]”预期参数类型的值“INOUT _”
我觉得这是斯威夫特的编译器无用的错误消息的另一种情况。真正的问题是AnyObject
意味着任何对象(引用类型);结构 - Int
和String
都是 - 不计数,因为它们是值类型。如果您想要参考任何类型,请使用Any
。
啊,够公平的,但这并没有解决问题,错误信息只是改变为[Any]而不是[AnyObject] – Alex
var arr = [Any]()
let arr1:[Any] = [2,3,4]
let arr2:[Any] = ["32","31"]
arr += arr1
arr += arr2
print(arr)
所以错误来自尝试添加'[Any]'和'[String]' ? – BallpointBen
这真是bizzare - 我试过这个,自动完成向我建议'contentsOf:',但是然后编译器说'extraneous argument label contentsOf:' - 作为一个错误,所以我甚至不能编译这个。我在Xcode 8.2.1 – Alex
请确保你明确地将数组转换为[Any],否则编译器会抛出“无关的参数标签”片 –
inout错误与swift中的指针和引用类型有关...你可以发布你正在试图做的整个方法吗? –
@MSU_Bulldog这是整个代码 - 它在操场上。 – Alex
@Alex您需要明确指定“AnyObject”的数组类型。 'anyArray + =字符串作为[AnyObject]' –