在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 _”

+0

inout错误与swift中的指针和引用类型有关...你可以发布你正在试图做的整个方法吗? –

+0

@MSU_Bulldog这是整个代码 - 它在操场上。 – Alex

+0

@Alex您需要明确指定“AnyObject”的数组类型。 'anyArray + =字符串作为[AnyObject]' –

我觉得这是斯威夫特的编译器无用的错误消息的另一种情况。真正的问题是AnyObject意味着任何对象(引用类型);结构 - IntString都是 - 不计数,因为它们是值类型。如果您想要参考任何类型,请使用Any

+0

啊,够公平的,但这并没有解决问题,错误信息只是改变为[Any]而不是[AnyObject] – Alex

var arr = [Any]() 
    let arr1:[Any] = [2,3,4] 
    let arr2:[Any] = ["32","31"] 
    arr += arr1 
    arr += arr2 
    print(arr) 
+0

所以错误来自尝试添加'[Any]'和'[String]' ? – BallpointBen

+0

这真是bizzare - 我试过这个,自动完成向我建议'contentsOf:',但是然后编译器说'extraneous argument label contentsOf:' - 作为一个错误,所以我甚至不能编译这个。我在Xcode 8.2.1 – Alex

+0

请确保你明确地将数组转换为[Any],否则编译器会抛出“无关的参数标签”片 –