我创建了一个小的选项卡式视图程序,它使用选项卡在两个视图之间切换 . 有一个名为list的全局变量,它是一个包含两个视图都需要访问和更改的信息的数组 . 但是,当我尝试使用NSUserDefaults保存数组以供将来在应用程序关闭后使用时,我收到一条错误消息:“无法将类型'Array <_>'的值转换为预期的参数类型'AnyObject?'” . 这是我的第二个视图的代码:

@IBOutlet weak var reminder: UITextField!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {

}
@IBAction func submit(sender: AnyObject) {
    if reminder.text == "" {
        label.text = "Please type a reminder!"
    } else {
        list.append(reminder.text!)
        reminder.text = ""
        label.text = "Add A Reminder"
    }

    // The below line is giving the error!!!!!

    // Specifically the fact that I am using the variable "list"

    NSUserDefaults.standardUserDefaults().setObject(list, forKey: "reminders")
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    self.view.endEditing(true)
}

func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()

    return true
}

我猜这与list变量是一个全局变量这一事实有关,但我很感激有一些帮助来完全诊断这个问题!

编辑:

我通过声明这样的全局变量列表解决了这个问题:

var list:[String] = String

代替:

var list:Array = []