保存大量编码的 UITextField 文本的最佳选择是什么:NSCoding 或 NSUserDefaults?
What is the best option for saving lots of coded UITextField text: NSCoding or NSUserDefaults?
我有一个 iOS 项目,正在使用 Xcode 7.3.1 和 Swift2。在我的项目中有 30 个编码 UITextFields
,每个都有一个分配给它的 action
。我也在用UITextFieldDelegate
。用户输入文本后,我希望保存文本。我在这里搜索了有关放置保存代码的最佳位置的答案。我不希望这个项目占用设备的内存。使用 NSObject
和 NSCoding
保存文本是否更好,例如:
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()
为了加载这些保存的值,我在 ViewWillAppear
中创建了一个 function
和 运行 函数。运行良好,似乎不会过多使用系统内存。
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")
}
我有一个 iOS 项目,正在使用 Xcode 7.3.1 和 Swift2。在我的项目中有 30 个编码 UITextFields
,每个都有一个分配给它的 action
。我也在用UITextFieldDelegate
。用户输入文本后,我希望保存文本。我在这里搜索了有关放置保存代码的最佳位置的答案。我不希望这个项目占用设备的内存。使用 NSObject
和 NSCoding
保存文本是否更好,例如:
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()
为了加载这些保存的值,我在 ViewWillAppear
中创建了一个 function
和 运行 函数。运行良好,似乎不会过多使用系统内存。
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")
}