import UIKit
struct Task {
var name: String
var completed: Bool
}
class ListModel {
var tasks: [Task] = [] // array to store tasks of todo list
let defaluts = UserDefaults.standard
func addTask( name: String, completed: Bool ) { // store task with status of complete into array
self.tasks.append( Task( name: name, completed: completed ) )
}
var tasksValue: [Task] { // getter and setter of array tasks
get {
return tasks
}
set {
tasks = newValue
}
}
func save() {
defaluts.set(tasks, forKey: "tasks")
}
func load() {
if let value = defaluts.array(forKey: "tasks") as? [Task] {
tasks = value
}
}
}
当我运行我的程序时,它显示由于未捕获的异常“NSInvalidArgumentException
”而终止应用程序的错误,原因:'尝试插入非属性列表对象。
有人可以帮我解决一下吗?
答案 0 :(得分:0)
答案很简单。您只能保存一小部分数据类型(属性列表类型:Array
,Dictionary
,String
,Data
,Date
,Int
,Double
,Float
,Bool
),可以UserDefaults
或属性列表。
如果您尝试编写任何其他对象类型或包含任何其他类型的容器,则会失败。您需要将自定义对象序列化为其他类型。
此外,除了较小的用户设置值外,您不能将任何内容存储到默认值。