我班上有一个变量:
var list = []
Run Code Online (Sandbox Code Playgroud)
我在课堂上使用它:
func chargeData (data: NSArray){
list = data
}
Run Code Online (Sandbox Code Playgroud)
它的工作以及对我的项目Swift 2.3,但是当我把它更新到XCode8和Swift3它给我下面的错误:
空集合文字需要显式类型
所以我在我的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)
在斯威夫特5 导游是相当明确有关创建空数组或字典:https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html#ID461朝第一部分的结尾。
要创建空数组或字典,请使用初始化语法。
let emptyArray = [String]()
let emptyDictionary = [String: Float]()
Run Code Online (Sandbox Code Playgroud)