我想不通,为什么下面的代码不工作:存储载体中的NSData斯威夫特
import Foundation
import SpriteKit
var TestVector: CGVector = CGVector(dx: 1, dy: 1)
var Data: Dictionary<String, Any> = ["abc":CGPoint(x: 0, y: 0), "def":1, "ghi":"Try", "jkl":TestVector]
let DataConverted: Data = NSKeyedArchiver.archivedData(withRootObject: Data)
let DataReceived: Dictionary = (NSKeyedUnarchiver.unarchiveObject(with: DataConverted) as! [String : Any])
错误抛出是:错误:执行被中断,原因是:信号SIGABRT。 该进程已停留在被中断的位置,使用“线程返回-x”返回表达式评估之前的状态。
一切都为很多不同类型的数据(字符串,整数,双,...)的工作正常,但它不工作的载体
是在数据的类型有限制可以存档通过NSKeyedArchiver?
THX
J.
附加信息:这是在MultipeerConnectivy数据传输
'CGPoint'不应该默认不能被转换为这样的成' (NS)数据“,因此无法归档。 'TestVector'也一样。你需要符合'NSCoder'协议。 – Larme
Thx。然而,它正在为CGPoint工作。只有CGVector类型会引发错误。你能告诉如何符合CGPoint和CGVector到NSCoder协议,什么是最好的语法? – jbegood
@Larme你的意思是'NSCoding' –