XCode升级、ios 8.1、spritekit和swift、对象构造和x27后出错;NSData(内容文件:选项:错误:)&x27;

XCode升级、ios 8.1、spritekit和swift、对象构造和x27后出错;NSData(内容文件:选项:错误:)&x27;,ios,iphone,swift,sprite-kit,Ios,Iphone,Swift,Sprite Kit,我有一个可以运行的游戏,我运行、编译并上传到ITunes connect。但是在更新XCode并尝试用目标ios 8.1(而不是8.0)编译我的游戏之后。我犯了这个错误 extension SKNode { class func unarchiveFromFile(file : NSString) -> SKNode? { let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks")

我有一个可以运行的游戏,我运行、编译并上传到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方法,在谷歌搜索中,我找不到有同样问题的人。我在这里真的迷路了

编辑: 将代码更新为此(在注释之后)

现在它编译并运行,但随后模拟崩溃

我只知道:

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
    }
}

实际上,编译器会准确地告诉您要使用什么:
NSData(contentsOfFile:path!,options:.DataReadingMappedIfSafe,error:nil)
谢谢,添加了它已编译的内容。但这只会导致另一次崩溃,这次没有错误消息..可能相关:
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
    }
}