我試圖通過製作一個小應用程序來讓我的頭圍繞Swift(在相對勝任Obj-C之後)。我想使用NSUserDefaults來持久保存少量的數據,但我遇到了問題。將Swift數組轉換爲NSData NSUserDefaults.StandardUserDefaults持久存儲
我初始化的元組空數組像這樣:
var costCategoryArray: [(name:String, defaultValue:Int, thisMonthsEstimate:Int, sumOfThisMonthsActuals:Int, riskFactor:Float, monthlyAverage:Float)]=[]
當陣列具有一個條目,我想在陣列保存到標準SWIFT代碼NSUserDefaults的如此:
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’的對象)」
什麼是TU數組問題普萊斯?爲什麼我不能存儲一個類對象的數組?我覺得我需要一些專家建議,因爲到目前爲止,我試圖用Swift做的一切幾乎是不兼容的...
謝謝! 「financialData」的
真的嗎?沒有人可以幫助保存NSUser默認的對象數組?即使它們與NSUser默認設置無關,我也會對任何建議感到滿意。 – user3535074 2014-10-07 09:03:08