Когда я пытаюсь сохранить данные во время использования приложения после перезапуска, я обнаружил ошибку при сохранении в NSUserDefault, который я не могу сохранить непосредственно с помощью Structs, в соответствии с тем, что я читаю NSUserDefaults, можно сохранить только небольшой набор типов: NSData, NSString, NSNumber, NSDate, NSArray, содержащие только эти типы, или NSDictionary, содержащие только эти типы, но я нашел некоторые формы на C, с которыми я не знаком, а некоторые в Swift, но я не совсем понимаю, кроме того, что я не может найти способ сделать это с конструкцией «Carreras», встроенной в конструкцию «CursosG». Я ищу эффективный способ, чтобы иметь возможность запускать это в Swift 3. Это мой код:Сохранить массив Struct в NSUserDefault 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")
Как я должен преобразовать-структуру?
Вы думали о CoreData, а не о UserDefaults? Хранение объектов в UserDefaults может быть беспорядочным, и CoreData не предназначен для хранения нескольких объектов одного типа (если вы хотите сохранить 10+ объектов CursoG). Хотя вы можете сериализовать CursoG и Carrera для хранения в UserDefaults, это может быть не самый лучший способ в зависимости от ваших требований. –