在Swift for iOS 7.1中取消归档.sks文件

时间:2015-05-06 16:46:58

标签: ios swift sprite-kit exc-bad-access

我有一个应用程序可以使用以下扩展名从iOS 8中的.sks文件中很好地加载:

class func unarchiveFromFile(file : NSString) -> SKNode?
{
    if let path = NSBundle.mainBundle().pathForResource(file as String, ofType: "sks")
    {
        var sceneData = NSData(contentsOfFile: 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
    }
    else
    {
        return nil
    }
}

但是,当我在运行iOS 7.1的设备上使用它时,我在AppDelegate上得到一个EXC_BAD_ACCESS代码EXC_I386_GPFLT,这在日志中:

SKTexture:加载图片资源时出错:“MissingResource.png”

我认为问题可能是sks文件被错误加载。谁能告诉我如何从sks文件中加载我的场景?

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

有趣的是,我设法通过检查iOS 8之前是否正在运行来解决此问题。如果是这样,我会加载游戏场景然后复制它。这解决了这个问题:

        let tempScene = GameScene.unarchiveFromFile(gameSceneFile) as? GameScene
        scene = tempScene!.copy() as! GameScene
相关问题