我正在尝试在用户默认值中存储自定义类,但要通过一个异常


  以NSException类型的未捕获异常终止


我的课程如下:

import Foundation
import SwiftyJSON
class Transactions: NSObject,NSCoding {
    var transOBJ = [JSON]()
    init(transOBJ:[JSON]) {
        self.transOBJ = transOBJ
    }
    required convenience init(coder aDecoder:NSCoder) {
        let obj = aDecoder.decodeObject(forKey: "OBJ") as! [JSON]
        self.init(transOBJ: obj)
    }
    func encode(with aCoder: NSCoder) {
        aCoder.encode(transOBJ, forKey: "OBJ")
    }
}


发生异常的原因是aCoder.encode(transOBJ,forKey:“ OBJ”)

用于保存用户默认设置的代码是:

let trans = [Transactions(transOBJ: self.transactionObjs)]
var userDefaults = UserDefaults.standard
let encodedData: Data = NSKeyedArchiver.archivedData(withRootObject: trans)
userDefaults.set(encodedData, forKey: "transactions")
userDefaults.synchronize()


更新1

我在Alamofire请求函数中调用用户默认值。然后它给出了一个错误
但是,当我在Alamofire请求函数之外调用它时,它运行得很好。我该怎么办?
我想将其保存在alamofire的成功范围内,但无法做到

最佳答案

将此代码替换为您的代码,然后删除应用程序并再次运行。

  required init(coder aDecoder: NSCoder) {
     transOBJ = = aDecoder.decodeObject(forKey: "OBJ") as! [JSON]
 }

10-07 13:30