簡體   English   中英

無法在 AR 多用戶中使用 NSKeyedUnarchiver 解壓自定義對象

[英]Can't unarchive custom Object with NSKeyedUnarchiver in AR Multiuser

我正在使用MultipeerConnectivity在多用戶AR session共享SCNNodes位置。

當我存檔時(使用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'

所以,這里的問題是,取消歸檔自定義對象的正確方法是什么?

因為在這里你使用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 的東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM