Cargue los niveles de SpriteKit desde el nombre del archivo

Para un juego que estoy creando, quiero poder crear muchos niveles personalizados que se puedan cargar fácilmente. Cada nivel debe tener un archivo de interfaz .sks y su propio archivo de subclase SKScene .swift.XCode http://i62.tinypic.com/14lhml2.png

En este momento, esto está funcionando:

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

Donde creo la escena así:

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

Pero esto no funciona para grandes colecciones porque no puedo iterar sobre cada nivel en, digamos, una carpeta de ellos. necesito algo como esto

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

Traté de usaresta respuesta para obtener la clase de la cadena de esta manera, pero la escena se cargó como si fuera solo un SKScene, no un objeto de Nivel 1.

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

Por ahora, trabajaré con esto, pero no creo que este sea el mejor enfoque:

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)

Solo quiero poder hacer una gran colección de subclases de SKScene fácilmente cargables, cada una con su propio archivo de interfaz.

Respuestas a la pregunta(1)

Su respuesta a la pregunta