我在Xcode 7(Swift 2)上運行應用程序時出現了一個非常奇怪的錯誤,該應用程序委託中顯示運行錯誤消息的「線程1:信號SIGABRT」我的應用程序類。不過,實際上,我已經在App Delegate類中多次出現了此「線程1:信號SIGABRT」運行錯誤消息,主要是在刪除代碼中的插座引用並忘記將其從故事板中刪除時。但是,這肯定是我第一次試圖使命令時,得到了同樣的錯誤:應用程序嘗試向NSUserDefaults添加元素時委託出現奇怪的錯誤
let wasteGain = WastesGainsClass(value: enteredMoney, originOrCat: segControlArray[segControl.selectedSegmentIndex], specification: plusEspecTField.text!, date: dateArray, mode: "gain")
gains.append(wasteGain)
NSUserDefaults.standardUserDefaults().setObject(gains, forKey: "gains")
什麼情況是,如果我只是註釋行NSUserDefaults.standardUserDefaults().setObject(gains, forKey: "gains")
應用程序不會崩潰!所以這個錯誤可能就在那一行。
如果有人能幫助我,我非常感謝你。
PS:WastesGainsClass格式是這樣的:
class WastesGainsClass {
var value:Int = 0
var origin:String
var specification:String
var date:[String]
var mode:String
var rowMode:Int = 0
init(value:Int, originOrCat:String, specification:String, date:[String], mode:String) {
self.value = value
self.origin = originOrCat
self.specification = specification
self.date = date
self.mode = mode
}
}
唯一的財產清單符合類型('NSNumber','NSString','NSDate','NSData')而集合類型'NSArray'和'NSDictionary'可以用'NSUserDefaults'保存。集合類型也必須包含屬性列表兼容類型。對於自定義類,您的類必須符合'NSCoding'以使用'NSKeyedArchiver/Unarchiver'存檔。 – vadian
@vadian您應該添加該答案作爲答案;這正是問題/解決方案所在。 –
[嘗試將非屬性列表對象設置爲NSUserDefaults]的可能重複(http://stackoverflow.com/questions/19720611/attempt-to-set-a-non-property-list-object-as- an-nsuserdefaults) – Glenn