保存大量编码的UITextField文本的最佳选择是什么:NSCoding或NSUserDefaults?
问题描述:
我有一个iOS项目,我正在使用Xcode 7.3.1和Swift2。在我的项目中,有30个编码UITextFields
,每个编号分配action
。我也使用UITextFieldDelegate
。用户输入文字后,我希望文字被保存。我在这里搜索了解放保存代码的最佳位置的答案。我不想让这个项目对设备的内存征税。它是更好地使用NSObject
和NSCoding
,像保存文本:保存大量编码的UITextField文本的最佳选择是什么:NSCoding或NSUserDefaults?
class TextFieldSave: NSObject, NSCoding {
var userText: String = ""
var textFieldName: String = ""
...
}
然后我可以保存textField
的名称,文本存储在并通过NSCoding
保存。
或者只是简单地用NSUserDefaults
保存就会减少内存吗?
我可以将保存代码放在每个textField
的动作中,或者以某种方式将所有30个保存代码合并到delegate
的textFieldDidEndEditing
部分。不确定哪个是最好的。我认为NSUserDefaults
是最简单的,但不是最好的内存使用。
感谢您的建议和帮助。
答
我最后通过NSUserDefaults
进行了保存,并且保存代码位于每个代码中的UITextField
action
。
// Declaration of Variable
var nameDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
在各action
:
nameDefaults.setObject(variable, forKey: "KEYname")
nameDefaults.synchronize()
要加载这些保存的值,我创建一个function
并运行ViewWillAppear
该函数。运行良好,似乎并没有太多地使用系统内存。
override func viewWillAppear(animated: Bool) {
loadData()
}
而且loadData
是:
if (nameDefaults.objectForKey("KEYname") != nil) {
variable = (nameDefaults.objectForKey("KEYname") as! String)
textField.text = variable
print(variable)
} else {
print("nil")
}