如何在NSUserDefaults中保存一个对象数组?

时间:2014-08-10 14:17:41

标签: swift nsuserdefaults xcode6

我需要在NSUserDefaults数组或其他数据结构中保存以使用以下格式保存对象:

name = "myName", lastName = "myLastName"

我尝试使用一组数组执行此操作,但这不能保存在NSUserDefaults中。

现在我正在尝试使用带结构的自定义类来创建对象并附加到数组,但在尝试将其保存到NSUserDefaults时也会出错。我需要保存这个结构,但我不知道什么是正确的形式。我该怎么做?

var taskMgr: TaskManager = TaskManager()

struct task {
    var name = "Un-Named"
    var lastName = "Un-lastNamed"
}

class TaskManager: NSObject {

    var tasks : [task] = []

    func addTask(name : String, lastName: String){
        tasks.append(task(name: name, lastName: desc))
    }
}

1 个答案:

答案 0 :(得分:5)

NSUserDefaults期望存储的对象都是属性列表对象,即NSArrayNSDictionaryNSStringNSNumber,{{1}的实例},或NSData。你的结构不是其中之一。在存储对象之前,您需要将对象转换为属性列表类型。一种方法是使用NSDateNSKeyedArchiver协议将结构编写到NSCoding的实例中。