[英]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.