我目前正在从事一个项目,其中包含一个移动IOS应用程序和一个单独的iPad应用程序。它们与Firebase数据库通信。
在移动应用程序上,它可以很好地在另一个移动设备上对对象进行存档和解压,但在iPad上,我得到了以下错误和线程1: signal SIGABRT。
libc++abi.dylib: terminating with uncaught exception of type NSException
它总是在下面一行中结束:
let ar = NSKeyedUnarchiver.unarchiveObject(with: array) as! [ProjectModel]
值数组是数据类型的数据。
对象文件:
import Foundation
import UIKit
class ProjectModel: NSObject, NSCoding {
var name: String!
var controllerArray: [ControllerModel]!
init(name: String!, controllerArray: [ControllerModel]!) {
self.name = name
self.controllerArray = controllerArray
}
required convenience init(coder aDecoder: NSCoder) {
let name = aDecoder.decodeObject(forKey: "name") as! String
let controllerArray = aDecoder.decodeObject(forKey: "controllerArray") as! [ControllerModel]
self.init(name: name, controllerArray: controllerArray)
}
func encode(with aCoder: NSCoder) {
aCoder.encode(name, forKey: "name")
aCoder.encode(controllerArray, forKey: "controllerArray")
}
}
发布于 2019-03-13 06:29:35
我找到了一个解决问题的方法。您需要使用可编码的类,而不是NSKeyedUnarchiver。
这里有一篇对我有帮助的博客文章的链接:medium.com/codable
https://stackoverflow.com/questions/55123309
复制相似问题