【发布时间】:2016-07-01 22:16:38
【问题描述】:
我有一个使用SwiftForms 的项目。
有一个导航栏按钮,它执行将 textFields 中的信息发送到 NSUserDefaults 的功能。但是,如果我有一个空的 textField,应用程序会崩溃,但是当所有字段都被填写时,数据会被保存。我是否只是在函数中添加一个检查以查找NSNull?
func submit(_: UIBarButtonItem!) {
let message = self.form.formValues()
//message is [String : AnyObject]
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setObject(message as Dictionary, forKey: "theMessage")
print("\n Message Saved! \n")
print(message)
}
这是我点击保存但未填写任何字段导致应用崩溃时出现的错误:
Attempt to set a non-property-list object {
birthday = "<null>";
job = "<null>";
lastName = "<null>";
name = "<null>";
segmented = "<null>";
stepper = 20;
textview = "<null>";
} as an NSUserDefaults/CFPreferences value for key theMessage
这是我填写所有字段后得到的结果 - 没有崩溃
--- Message Saved! ---
["segmented": 1, "job": Job, "lastName": Last, "birthday": 2016-07-01 22:00:12 +0000, "textview": Etiam porta sem malesuada magna mollis euismod. Vestibulum id ligula porta felis euismod semperac, vestibulum at eros., "stepper": 22, "name": First]
【问题讨论】:
-
将代码发布到您要在字典中添加值的位置。
-
与 Swift 字典不同,NSDictionary 不能包含空值。你的
formValues函数应该返回一个没有选项的字典;要么将 "",NSNull放在空值中,或者甚至更好,省略没有值的键。
标签: ios swift swift2 nsdictionary nsuserdefaults