Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Swift UserDefaults返回nil_Arrays_Swift_Uitableview_Nsuserdefaults - Fatal编程技术网

Arrays Swift UserDefaults返回nil

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]) !=

努力学习做一个托德主义者;我有两个ViewController,一个用于存储,另一个用于在表视图中显示。我的表返回零;我哪里做错了

存储视图:

    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”)??[字符串]()