导入AVFoundation时模糊使用'下标'错误

时间:2016-01-25 17:02:29

标签: xcode swift subscript

使用Xcode 7.2和Swift 2.1.1

我正在从.plist文件中检索数据 该文件包含一系列测验的数据。要检索的测验数据包括12个问题的数组和12个多选项的相应数组(每个4个成员)。

var quizId = “”
var questions:[String] = []
var answers:[[String]] = []

测验ID以前一个视图控制器的segue传递。然后在ViewDidLoad中检索数据。

let path = NSBundle.mainBundle().pathForResource(“quiz id”, ofType: "plist")
let dict = NSDictionary(contentsOfFile: path!)
questions = dict!.objectForKey(“Questions”)![0] as! [String]
answers = dict!.objectForKey(“Answers”)![1] as! [[String]]

代码完全正常,直到我尝试导入AVFoundation,当最后两行抛出模糊使用'下标'错误时。

1 个答案:

答案 0 :(得分:1)

这是因为导入AVFoundation会带来新的下标定义(即AUAudioUnitBusArray,谢谢Martin R.)并且它会混淆不再知道什么类型为if let questions = dict?.objectForKey("Questions") as? NSArray { print(questions[0]) } 的编译器(它确实被推断为AnyObject之后)导入,而不是NSArray)。

解决方法是安全地帮助编译器知道类型,例如通过使用可选绑定进行向下转换:

if let questions = dict?.objectForKey("Questions") as? [String] {
    print(questions[0])
}

甚至更好:

{{1}}