Data(bytesNoCopy: expects a pointer, not a string path.
API to read Datafrom disk Data(contentsOf, however it expects a URL
extension SKNode {
class func unarchiveFromFile(_ file : String) -> SKNode? {
if let url = Bundle.main.url(forResource: file, withExtension: "sks") {
do {
var sceneData = try Data(contentsOf: url)
var archiver = NSKeyedUnarchiver(forReadingWith: sceneData)
archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as! GameScene
archiver.finishDecoding()
return scene
} catch {
return nil
}
} else {
return nil
}
}
}
In Swift 3, I renamed the method to
class func unarchive(from file : String) -> SKNode? { ...
source
share