我正在使用 xCode 7.3 的 playground 并学习 Swift 2.0。
我有一个如下的数组:
var arrayName:Array = [1, 2, 3, 4, "Mike"]
我遇到了以下错误:
当我从数组中移除字符串时,错误消失了。但是显然Swift允许在数组中使用多种类型,所以我不明白为什么会出错?表达式类型不明确,需要更多的上下文信息
你有什么想法吗?
谢谢!
错误信息已经说明了问题。例如,您可以像这样解决它:
var arrayName: Array<AnyObject> = [1, 2, 3, 4, "Mike"]
var arrayName = [1, 2, 3, 4, "Mike"]
那么arrayName
将会隐式地获得类型为Array<NSObject>
。
关键在于类型识别。您有两个选择:使用显式的完整类型声明,或让Swift编译器尝试识别类型。
看这个
所以,数组只能包含一种类型的对象吗?如果我想要不同类型怎么办? 在Swift中,强烈建议您使用强类型数组,只包含一种类型的对象,语法如下:
var goodArray: [String] = ["foo", "bar"]
var brokenArray: [AnyObject] = ["foo", 1, 12.23, true]
let arrayName = [1, 2, 3, 4] as [AnyObject] + ["Mike"] as [AnyObject]
protocol Foo {}
struct Bar: Foo {}
struct Baz: Foo {}
let barArray = [Bar()]
let bazArray = [Baz()]
let fooArray = barArray as [Foo] + bazArray as [Foo]