0

这是我的课程,我将制作一个数组并保存它:

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]

但是,当我关闭并重新打开应用程序时,它不会被保存。有人可以帮忙吗?

4

0 回答 0