Не удается разархивировать пользовательский объект с помощью NSKeyedUnarchiver в AR Multiuser - PullRequest
0 голосов
/ 15 января 2019

Я использую MultipeerConnectivity, чтобы разделить SCNNodes позицию в многопользовательском AR session.

Когда я архивирую (с NSKeyedArchiver.archivedData(withRootObject: someARNode, requiringSecureCoding: true))

И разархивировать (с if let node = try NSKeyedUnarchiver.unarchivedObject(ofClass:SCNNode.self, from: data) {)
Все работает нормально, но сейчас я пытаюсь отправить пользовательский объект, как это:

struct ARUser: Codable {
    var idUser : String
    var position: [Double]
}

Когда я пытаюсь разархивировать объект, полученный с NSKeyedUnarchiver.unarchivedObject, это выдает мне ошибку.

if let node = try NSKeyedUnarchiver.unarchivedObject(ofClass:ARUser.self, from: data) {...}

Я получаю синтаксическую ошибку: Incorrect argument label in call (have 'ofClass:from:', expected 'ofClasses:from:')
Но если я изменю функцию в соответствии с предложением компилятора:

 if let node = try NSKeyedUnarchiver.unarchivedObject(ofClasses:[ARUser.self], from: data) {..}

Я получаю следующую синтаксическую ошибку: Cannot convert value of type 'ARUser.Type' to expected element type 'AnyObject.Type'

Итак, вопрос здесь в том, как правильно разархивировать пользовательские объекты?

1 Ответ

0 голосов
/ 15 января 2019

Так как здесь вы используете Codable

struct ARUser: Codable {

Тогда

do {
   let dataToObject = try JSONDecoder().decode(ARUser.self,from:data)
   let objectToData = try JSONEncoder().encode(dataToObject)
}
catch { 
   print(error)
}

NSKeyedUnarchiver старый материал Objective-C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...