来自' NSMutableArray'不相关的类型' [String]'总是失败

时间:2016-09-18 16:52:37

标签: swift2 type-conversion

我在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,但它不起作用......)

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

除非绝对没有选择,否则不要使用可变的Foundation集合类型。

使用原生的Swift类型。

var answersList = [[String]]()
...
answersList = (dictRoot?.allValues)! as! [[String]]