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

3

我需要在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))
    }
}

你有没有阅读文档 - pNre
1个回答

5
< p >< code >NSUserDefaults期望存储的对象都是属性列表对象,即NSArrayNSDictionaryNSStringNSNumberNSDataNSDate的实例。您的结构体不属于其中之一。在存储之前,您需要将对象转换为属性列表类型。一种方法是使用NSKeyedArchiverNSCoding协议将结构体写入NSData的实例中。


可以编写Swift字符串和字符串的NSArray。例如:defaults.setObject("obj2", forKey:"key")和defaults.setObject(["val3", "val4"] as NSArray, forKey: key)。 - zaph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接