Enregistrer struct dans la classe de NSUserDefaults l'utilisation de Swift

J'ai une classe et à l'intérieur de la classe est un (swift) de tableau, basé sur une struct global.
Je veux enregistrer un tableau avec cette classe de NSUserDefaults. C'est mon code:

struct mystruct {
    var start : NSDate = NSDate()
    var stop : NSDate = NSDate()
}

class MyClass : NSObject {

    var mystructs : [mystruct]

    init(mystructs : [mystruct]) {

        self.mystructs = mystructs 
        super.init()
    }

    func encodeWithCoder(encoder: NSCoder) {
        //let val = mystructs.map { $0 as NSObject } //this also doesn't work
        let objctvtmrec = NSMutableArray(mystructs)  //gives error
        encoder.encodeObject(objctvtmrec)
        //first approach:
        encoder.encodeObject(mystructs) //error: [mystructs] doesn't conform to protocol 'anyobject'
    }

}

var records : [MyClass] {
    get {
        var returnValue : [MyClass]? = NSUserDefaults.standardUserDefaults().objectForKey("records") as? [MyClass]
        if returnValue == nil
        {
            returnValue = []
        }
        return returnValue!
    }
    set (newValue) {
        let val = newValue.map { $0 as AnyObject }
        NSUserDefaults.standardUserDefaults().setObject(val, forKey: "records")
        NSUserDefaults.standardUserDefaults().synchronize()
    }
}

Je l'ai déjà sous-classé à NSObject, et je sais que j'ai besoin NSCoding. Mais je ne trouve aucun moyen de convertir la structure d'une matrice à une NSMuteableArray ou quelque chose de similaire, je peux stocker. La seule idée jusqu'à maintenant est d'aller à travers chaque entrée et les copier directement sur un nouveau tableau ou d'utiliser beaucoup de ou code objective-c à travers tout le projet, donc je n'ai jamais besoin de les convertir à partir de swift tableaux à objective-c des tableaux. Les deux sont des choses que je ne veux pas faire.

OriginalL'auteur Thomas | 2014-08-28