这是我的课程,我将制作一个数组并保存它:
import Foundation
import UIKit
class Med: NSObject, NSCoding {
var nombre : String!
var dias : Int!
var semanas : Int!
var minutos : Int!
var horas : Int!
var identifiers = [String]()
init(nombre: String, dias: Int, semanas: Int, minutos: Int, horas: Int, identifiers: [String]) {
self.nombre = nombre
self.dias = dias
self.semanas = semanas
self.minutos = minutos
self.horas = horas
self.identifiers = identifiers
}
required convenience init(coder aDecoder: NSCoder) {
let nombre = aDecoder.decodeObject(forKey: "nombre") as! String
let dias = aDecoder.decodeObject(forKey: "dias") as! Int
let semanas = aDecoder.decodeObject(forKey: "semanas") as! Int
let minutos = aDecoder.decodeObject(forKey: "minutos") as! Int
let horas = aDecoder.decodeObject(forKey: "horas") as! Int
let identifiers = aDecoder.decodeObject(forKey: "identifiers") as! [String]
self.init(nombre: nombre, dias: dias, semanas: semanas, minutos: minutos, horas: horas, identifiers: identifiers)
}
func encode(with aCoder: NSCoder) {
aCoder.encode(nombre, forKey: "nombre")
aCoder.encode(dias, forKey: "dias")
aCoder.encode(semanas, forKey: "semanas")
aCoder.encode(minutos, forKey: "minutos")
aCoder.encode(horas, forKey: "horas")
aCoder.encode(identifiers, forKey: "identifiers")
}
}
这是我使用用户默认设置保存我的对象数组的实现:
var userDefaults = UserDefaults.standard
let encodedData: Data = NSKeyedArchiver.archivedData(withRootObject: listaMeds)
userDefaults.set(encodedData, forKey: "listaMeds")
userDefaults.synchronize()
这就是我再次获取数据的方式:
let decoded = userDefaults.object(forKey: "listaMeds") as! Data
listaMeds = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! [Med]
然而,当我关闭并重新打开应用程序时,它不会保存。 有人可以帮忙吗?