Firebase между различными приложениями IOS завершение работы NSKeyedUnarchiver

#ios #swift #firebase #firebase-realtime-database

#iOS #swift #firebase #firebase-база данных в реальном времени

Вопрос:

В настоящее время я работаю над проектом, который содержит мобильное приложение для 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]
  

Массив значений представляет собой данные типа 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")
}
  

}

Комментарии:

1. Пожалуйста, добавьте скриншот базы данных firebase к вашему вопросу.

Ответ №1:

Я нашел способ решить проблему. Вам нужно использовать класс Codable вместо NSKeyedUnarchiver.

Вот ссылка на сообщение в блоге, которое мне помогает:medium.com/codable