Преобразование Swift Array в NSData для постоянного хранилища NSUserDefaults.StandardUserDefaults

Я пытаюсь разобраться со Swift (после того, как я достаточно компетентен в Obj-C), создав небольшое приложение. Я хотел бы использовать NSUserDefaults для постоянного сохранения небольшого объема данных, но у меня проблемы.

Я инициализирую пустой массив кортежей следующим образом:

var costCategoryArray: [(name:String, defaultValue:Int, thisMonthsEstimate:Int, sumOfThisMonthsActuals:Int, riskFactor:Float, monthlyAverage:Float)]=[]

Когда в массиве есть запись, я хочу сохранить массив в NSUserDefaults со стандартным кодом Swift, например так:

NSUserDefaults.standardUserDefaults().setObject(costCategoryArray, forKey: "financialData")
NSUserDefaults.standardUserDefaults().synchronize()

Я получаю сообщение о том, что массив кортежей не соответствует классу AnyObject. Поэтому я попытался превратить его в NSData:

var myNSData: NSData = NSKeyedArchiver.archivedDataWithRootObject(costCategoryArray)
var myUnarchivedData: Array = NSKeyedUnarchiver.unarchiveObjectWithData(myNSData)

... но я получаю ту же ошибку при преобразовании в NSData. Объект, удерживаемый моим массивом, не соответствует AnyObject. Я также пытался на каждом этапе сделать его неизменным, используя:

let immutableArray = costCategoryArray

Я также попытался создать класс вместо использования кортежей, которые, как я понял, заставили бы его соответствовать AnyObject:

class costCategory : NSObject {
    var name : String
    var defaultValue : Int
    var thisMonthsEstimate : Int
    var sumOfThisMonthsActuals : Int
    var riskFactor : Float
    var monthlyAverage : Float


    init (name:String, defaultValue:Int, thisMonthsEstimate:Int,     sumOfThisMonthsActuals:Int, riskFactor:Float, monthlyAverage:Float) {
        self.name = name
        self.defaultValue = defaultValue
        self.thisMonthsEstimate = thisMonthsEstimate
        self.sumOfThisMonthsActuals = sumOfThisMonthsActuals
        self.riskFactor = riskFactor
        self.monthlyAverage = monthlyAverage
    }
}

Но новая ошибка:

«Список свойств, недопустимый для формата: 200 (списки свойств не могут содержать объекты типа« CFType »)»

В чем проблема с массивом кортежей? Почему я не могу хранить массив объектов класса? Я чувствую, что мне нужен совет специалиста, поскольку все, что я пытаюсь сделать со Swift, в значительной степени несовместимо ...

Спасибо!

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

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