使用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,当最后两行抛出模糊使用'下标'错误时。
答案 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}}