【问题标题】:uitextfield in swift 3 not savingswift 3中的uitextfield不保存
【发布时间】:2016-12-07 15:59:37
【问题描述】:

我的文本字段没有保存。我的代码在下面列出。谢谢

class ViewController: UIViewController,UITextFieldDelegate {
@IBOutlet weak var textext: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}
@IBAction func savesavesave(_ sender: Any) {
    let myText = textext.text
    UserDefaults.standard.set(myText, forKey: "myKey")

}

【问题讨论】:

标签: ios swift save uitextfield swift3


【解决方案1】:

确保您的文本字段不是第一响应者。例如,您可以在保存之前调用以下代码:

@IBAction func savesavesave(_ sender: Any) {
    textext.resignFirstResponder()
    let myText = textext.text
    UserDefaults.standard.set(myText, forKey: "myKey")
}

【讨论】:

  • 如何获取要保存的文本?当我更改视图控制器时,所有数据都会被删除。
【解决方案2】:

您应该尝试将文本字段保存到 UserDefaults 中:

let myText = TextFiled1.text
UserDefaults.standard.set(myText, forKey: "myKey")

如果您想获取该文本字段值,请写下:

let value = UserDefaults.standard.string(forKey: "myKey")
print(value!)

【讨论】:

    【解决方案3】:

    将用户默认值与其方法同步并测试是否有效 我是凭记忆写的:

    UserDefaults.standard.set(myText, forKey: "myKey")
    
    UserDefaults.standard.synchronize()
    

    编辑 来自apple documentation

    // 请注意,我们不与文件系统或任何东西同步;这会发生 应用退出时。有时可能需要显式同步, 但通常不是。不必要的同步也可能是性能问题。

    根据苹果文档,我理解(您可能不这么认为)如果您想在运行时获取值,而不是将其保存在变量中 - 您应该手动同步

    再次编辑 感谢@LeoDabus,我知道它可能在运行时也可用。所以不要指望我的回答

    【讨论】:

    • 无需强制同步
    • 我相信强制它是最好的做法,在所有示例和教程中都是这样......除非有什么改变而且我不知道......
    • 给我看一个苹果公司的。顺便说一句,我没有投反对票
    • @LeoDabus 你去吧,我已经编辑了我的答案并从 Apple 添加,祝你好运!
    • 这正是我所说的。大多数情况下不需要。
    【解决方案4】:

    是的,如果应用程序即将退出,则不需要进行同步。为了在应用程序启动期间访问信息,必须进行同步。更多信息您可以查看:iOS NSUserDefaults access before synchronize completion

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      相关资源
      最近更新 更多