我在Swift中编写了一个QuizApp,这段代码让我发疯了。
我在UIViewController类之前声明了以下变量:
var questionsList:[String] = []
var answersList:[NSMutableArray] = []
我确实读了加载其内容的.plist文件:
let dictRoot = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("filename", ofType: "plist")!)
questionsList = (dictRoot?.allKeys)! as! [String]
answersList = (dictRoot?.allValues)! as! [NSMutableArray]
我有一个generateRandomQuestion函数,如下所示:
func generateRandomQuestion() {
let randomQuestionIndex = Int(arc4random() % UInt32(questionsList.count))
randomQuestion = "\(questionsList[randomQuestionIndex])"
answersToRandomQuestion = (answersList[randomQuestionIndex]) as! [String]
不幸的是,向[String]的NSMutableArray的转换总是失败......
有关如何转换它而不搞乱的任何暗示?
(我试过flatMap,但它不起作用......)
非常感谢任何帮助!
答案 0 :(得分:3)
除非绝对没有选择,否则不要使用可变的Foundation集合类型。
使用原生的Swift类型。
var answersList = [[String]]()
...
answersList = (dictRoot?.allValues)! as! [[String]]