Загрузить уровни SpriteKit из имени файла

Для игры, которую я создаю, я хочу иметь возможность создавать множество пользовательских уровней, которые можно легко загружать. Каждый уровень должен иметь файл интерфейса .sks и собственный файл .swift подкласса SKScene.XCode http://i62.tinypic.com/14lhml2.png

Прямо сейчас это работает:

extension SKScene {
    class func unarchiveFromFile(file : NSString, theClass : AnyClass!) -> SKScene? {
        if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") {
            var sceneData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil)
            var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)

            archiver.setClass(theClass, forClassName: "SKScene")
            let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as SKScene
            archiver.finishDecoding()
            return scene
        } else {
            return nil
        }
    }
}

Где я создаю сцену так:

if let scene = SKScene.unarchiveFromFile("Level1", theClass: Level1.classForKeyedUnarchiver())

Но это не работает для больших коллекций, потому что я не могу перебирать каждый уровень, скажем, в их папке. Мне нужно что то подобное

if let scene = SKScene.unarchiveFromFile("Level1", className:"Level1")

Я пытался с помощьюэтот ответ чтобы получить класс из строки, подобной этой, но сцена загружается так, как будто это просто сценарий SKScene, а не объект Level1.

let classFromString: AnyClass! = NSObject.swiftClassFromString("Level1")
    if let scene = SKScene.unarchiveFromFile("Level1", theClass: classFromString)

Пока я буду работать с этим, но я не думаю, что это лучший подход:

let levels = [
    ("Level1", Level1.classForKeyedUnarchiver()),
    ("Level2", Level2.classForKeyedUnarchiver())]

let level1 = levels[0]
let (fileName : String, theClass: AnyClass!) = classes[0]
if let scene = SKScene.unarchiveFromFile(fileName, theClass: theClass)

Я просто хочу иметь возможность создать большую коллекцию легко загружаемых подклассов SKScene, каждый из которых имеет свой собственный файл интерфейса.

Ответы на вопрос(1)

Ваш ответ на вопрос