#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