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

use*_*888 3 nsuserdefaults swift xcode6

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

name = "myName", lastName = "myLastName"
Run Code Online (Sandbox Code Playgroud)

我试图用一组数组来做这件事,但这无法保存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))
    }
}
Run Code Online (Sandbox Code Playgroud)

Cal*_*leb 5

NSUserDefaults预计存储的对象全部是属性列表对象,即实例NSArray,NSDictionary,NSString,NSNumber,NSData,或NSDate.你的结构不是其中之一.在存储对象之前,您需要将对象转换为属性列表类型.一种方法是使用NSKeyedArchiverNSCoding协议将结构写入一个实例NSData.