【发布时间】:2015-09-26 15:41:17
【问题描述】:
我在 Xcode 7 (Swift 2) 上运行我的应用程序时遇到了一个非常奇怪的错误,在我的应用程序的 App Delegate 类中显示“线程 1:信号 SIGABRT”运行错误消息。但是,我实际上已经在 App Delegate 类中多次收到此“线程 1:信号 SIGABRT”运行错误消息,主要是在我的代码中删除插座引用并忘记将其从情节提要中删除时。但这肯定是我第一次在尝试发出命令时遇到同样的错误:
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 您应该将其添加为答案;这正是问题/解决方案所在。
标签: swift nsuserdefaults swift2 sigabrt