Swift3上的"空集合文字需要显式类型"错误

Fra*_*ero 17 ios swift3

我班上有一个变量:

var list = []
Run Code Online (Sandbox Code Playgroud)

我在课堂上使用它:

func chargeData (data: NSArray){
    list = data
}
Run Code Online (Sandbox Code Playgroud)

它的工作以及对我的项目Swift 2.3,但是当我把它更新到XCode8Swift3它给我下面的错误:

空集合文字需要显式类型

所以我在我的list变量中添加了一个类型转换:

var list = [] as! NSArray
Run Code Online (Sandbox Code Playgroud)

但它给了我以下警告:

将'NSArray'强制转换为相同类型无效

我知道警报不会破坏应用程序,但我想以正确的方式解决此错误.

有人得到了同样的错误并妥善解决了吗?

提前致谢!

Qby*_*yte 27

发生此错误,因为隐式转换被废除,因此您必须告诉编译器显式类型(ArrayLiteral []):

var list: NSArray = []
// or
var list = [] as NSArray
Run Code Online (Sandbox Code Playgroud)


Álv*_*ero 5

快速更新 4 :

var array = [] as [String]
Run Code Online (Sandbox Code Playgroud)


and*_*rei 5

斯威夫特5 导游是相当明确有关创建空数组或字典:https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html#ID461朝第一部分的结尾。

要创建空数组或字典,请使用初始化语法。

let emptyArray = [String]()
let emptyDictionary = [String: Float]()
Run Code Online (Sandbox Code Playgroud)