从 'NSMutableArray' 转换为无关类型“[String]”总是失败
Cast from 'NSMutableArray' to unrelated type '[String]' always fails
我正在 Swift 中编写一个 QuizApp,这段代码让我抓狂。
我在 UIViewController 之前声明了以下变量 class:
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]
不幸的是,将 NSMutableArray 转换为 [String] 总是失败...
关于如何在不乱搞的情况下转换它的任何提示?
(我尝试了 flatMap 但它不起作用...)
非常感谢任何帮助!
除非别无选择,否则不要使用可变的 Foundation 集合类型。
使用原生 Swift 类型。
var answersList = [[String]]()
...
answersList = (dictRoot?.allValues)! as! [[String]]
我正在 Swift 中编写一个 QuizApp,这段代码让我抓狂。
我在 UIViewController 之前声明了以下变量 class:
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]
不幸的是,将 NSMutableArray 转换为 [String] 总是失败...
关于如何在不乱搞的情况下转换它的任何提示?
(我尝试了 flatMap 但它不起作用...)
非常感谢任何帮助!
除非别无选择,否则不要使用可变的 Foundation 集合类型。
使用原生 Swift 类型。
var answersList = [[String]]()
...
answersList = (dictRoot?.allValues)! as! [[String]]