不同IOS应用程序NSKeyedUnarchiver之间的Firebase终止

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (26)

我目前正在开发一个项目,其中包含一个Mobile IOS应用程序和一个单独的iPad App。这些与Firebase数据库通信。

在移动应用程序上,它可以很好地归档对象并在另一个移动设备上取消归档,但在iPad上我得到以下错误和一个线程1:信号SIGABRT。

libc++abi.dylib: terminating with uncaught exception of type NSException 

它始终终止于以下行:

let ar = NSKeyedUnarchiver.unarchiveObject(with: array) as! [ProjectModel]

值数组是Data类型的Data。

对象文件:

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")
}

}

提问于
用户回答回答于

我找到了解决问题的方法。您需要使用Class Codable而不是NSKeyedUnarchiver。

这是一个博客文章的链接,它可以帮助我:medium.com/codable

扫码关注云+社区

领取腾讯云代金券