我有一个可以运行的游戏,我运行、编译并将其上传到 iTunes connect。但是在更新 XCode 并尝试使用目标 ios 8.1(不是 8.0)编译我的游戏之后。我收到了这个错误。
extension SKNode {
class func unarchiveFromFile(file : NSString) -> SKNode? {
let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks")
// ERROR:
// 'dataWithContentsOfFile(_:options:error:)' is unavailable: use object construction 'NSData(contentsOfFile:options:error:)'
var sceneData = NSData.dataWithContentsOfFile(path!, options: .DataReadingMappedIfSafe, error: nil)
var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)
archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as GameScene
archiver.finishDecoding()
return scene
}
}
我在这里没有触及 unarchiveFromFile 方法,通过谷歌搜索我找不到任何有同样问题的人。真的迷失在这里。
编辑: 将代码更新为此(评论后)
extension SKNode {
class func unarchiveFromFile(file : NSString) -> SKNode? {
let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks")
var sceneData = NSData.dataWithContentsOfFile(path!, options: .DataReadingMappedIfSafe, error: nil)
var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)
archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as GameScene
archiver.finishDecoding()
return scene
}
}
现在它编译并运行,但随后模拟崩溃!
我只得到这个:
dyld`dyld_fatal_error:
0x1fe1e08c: trap
0x1fe1e090: nop
最佳答案
你可以试试:
extension SKNode {
class func unarchiveFromFile(file : NSString) -> SKNode? {
if let path = NSBundle.mainBundle().pathForResource(file as String, ofType: "sks") {
var sceneData = NSData()
do {
try sceneData = NSData(contentsOfFile: path, options:NSDataReadingOptions.DataReadingMappedIfSafe)
} catch {
abort()
}
let archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)
archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as! GameScene
archiver.finishDecoding()
return scene
} else {
return nil
}
}
关于ios - XCode 升级后出错,ios 8.1,spritekit 和 swift,对象构建 'NSData(contentsOfFile:options:error:)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26692995/