保存大量编码的UITextField文本的最佳选择是什么:NSCoding或NSUserDefaults?

时间:2016-05-23 14:52:45

标签: uitextfield nsuserdefaults nscoding uitextfielddelegate

我有一个iOS项目,我正在使用Xcode 7.3.1和Swift2。在我的项目中有30个编码 <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-ftp</artifactId> <version>2.15.1</version> </dependency> ,每个都为其分配了UITextFields。我也在使用action。用户输入文本后,我希望保存文本。我在这里搜索了关于放置保存代码的最佳位置的答案。我不希望这个项目对设备的内存造成负担。使用UITextFieldDelegateNSObject保存文字更好,例如:

NSCoding

然后,我可以保存文本存储的class TextFieldSave: NSObject, NSCoding { var userText: String = "" var textFieldName: String = "" ... } 的名称,并通过textField保存。

或者用NSCoding简单保存会减少内存吗?

我可以将保存代码放在每个NSUserDefaults的操作中,或以某种方式将所有30个代码合并到textField的{​​{1}}部分中。不确定哪个最好。我认为textFieldDidEndEditing是最简单的,但对于内存使用来说并不是必需的。

感谢您的建议和帮助。

1 个答案:

答案 0 :(得分:0)

我最终通过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")
}