当我尝试在重启期间使用App保存数据时,我在保存到NSUserDefault时发现我无法直接使用Structs保存,根据我读的NSUserDefaults只能保存一小部分类型:NSData,NSString,NSNumber,NSDate,NSArray只包含这些类型,或者只包含这些类型的NSDictionary,但我在C中找到了一些我不熟悉的形式,有些在Swift中,但我不太明白,除此之外我找不到使用Struct“CursosG”中嵌入的Struct“Carreras”的方法。我正在寻找一种能够在Swift 3中运行它的有效方法。这是我的代码:
struct CursosG {
let id: Int
let nrc: String
let profesor: String
let carreras: [Carreras]
let dia: String
let bloque: String
let sala: String
let idcurso: Int
let comentario: String
let curso: String
init(id: Int, nrc: String, profesor: String, carreras: [Carreras], dia: String, bloque: String, sala: String, idcurso: Int, comentario: String, curso: String) {
self.id = id
self.nrc = nrc
self.profesor = profesor
self.carreras = carreras
self.dia = dia
self.bloque = bloque
self.sala = sala
self.idcurso = idcurso
self.comentario = comentario
self.curso = curso
}
struct Carreras {
let id: Int
let nombre: String
let semestre: Int
init(id: Int, nombre: String, semestre: Int) {
self.id = id
self.nombre = nombre
self.semestre = semestre
}
}
}
...
var CursoAllG = [CursoG]()
...
let curso = CursosG(id: idT, nrc: nrcT, profesor: profesorT, carreras: carrers as! [CursosG.Carreras], dia: diaT, bloque: bloqueT, sala: salaT, idcurso: idcursoT, comentario: comentarioT, curso: cursoT)
CursosAllG.append(curso)
...
UserDefaults.standard.set(CursosAllG, forKey: "cursosAllG")
我应该如何转换结构?
答案 0 :(得分:0)
您需要将struct数据转换为NSData,然后才能存储它。这是一个描述它的链接Structs to NSData to Structs?
但是我仍然觉得你应该使用字典而不是使用结构,因为它具有跨平台支持。