Xcode 8.1 Swift 3错误:无法将’String’类型的值转换为预期的
发布时间:2020-12-14 18:04:31 所属栏目:百科 来源:网络整理
导读:包含var sceneData代码的行给出了一个错误,显然是因为“path”字符串.有谁知道如何解决这个问题?谢谢! extension SKNode { class func unarchiveFromFile(_ file : String) - SKNode? { if let path = Bundle.main.path(forResource: file,ofType: "sks")
包含var sceneData代码的行给出了一个错误,显然是因为“path”字符串.有谁知道如何解决这个问题?谢谢!
extension SKNode { class func unarchiveFromFile(_ file : String) -> SKNode? { if let path = Bundle.main.path(forResource: file,ofType: "sks") { var sceneData = Data(bytesNoCopy: path,count: .DataReadingMappedIfSafe,deallocator: nil)! var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData) archiver.setClass(self.classForKeyedUnarchiver(),forClassName: "SKScene") let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as! GameScene archiver.finishDecoding() return scene } else { return nil } } } 解决方法
数据(bytesNoCopy:期望指针而不是字符串路径.
从磁盘读取数据的API是Data(contentsOf,但是需要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 } } } 在Swift 3中,我将方法重命名为 class func unarchive(from file : String) -> SKNode? { ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |