Arrays Swift UserDefaults返回nil
努力学习做一个托德主义者;我有两个ViewController,一个用于存储,另一个用于在表视图中显示。我的表返回零;我哪里做错了 存储视图:Arrays Swift UserDefaults返回nil,arrays,swift,uitableview,nsuserdefaults,Arrays,Swift,Uitableview,Nsuserdefaults,努力学习做一个托德主义者;我有两个ViewController,一个用于存储,另一个用于在表视图中显示。我的表返回零;我哪里做错了 存储视图: var toDoStorage = UserDefaults.standard.object(forKey: "toDo") var toDoList = [String] () @IBAction func saveButton(_ sender: Any) { if (toDoStorage as? [String]) !=
var toDoStorage = UserDefaults.standard.object(forKey: "toDo")
var toDoList = [String] ()
@IBAction func saveButton(_ sender: Any) {
if (toDoStorage as? [String]) != nil {
toDoList.append(itemLabel.text!)
} else {
toDoList = [itemLabel.text!]
}
UserDefaults.standard.set(toDoList, forKey: "todo")
itemLabel.text = ""
}
显示视图:
var toDo = [UserDefaults.standard.object(forKey: "toDo")]
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return toDo.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "IDCell")
cell.textLabel?.text = String(describing: toDo[indexPath.row])
return cell
}
只要使用这个函数,就可以存储字符串数组
var toDo = UserDefaults.standard.stringArray(forKey: "todo") ?? [String]()
确保你的钥匙匹配。。
你的钥匙打错了。。“待办事项”!=“toDo”谢谢,我没有看到这是答案的一部分,我确定,但如果我只更正了输入错误,我的表格中出现了显示错误,上面的解决方案有效了!我是否必须使用stringArray,因为数据已经是一个数组?不,你可以使用Object,但最好说array stringI尝试用Object替换stringArray,但之后出现错误;变量未被识别为数组,因此我无法使用count和indexpath.rowUserDefaults.standard.object(forKey:“todo”)??[String]()很抱歉,您需要使用let myarray=UserDefaults.standard.array(forKey:“todo”)??[字符串]()