2016-12-07 54 views
3

我的文本字段没有保存。我的代码列在下面。由于uitextfield in swift 3 not saving

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") 

} 
+0

http://stackoverflow.com/a/34803102/2303865 –

回答

0

如果工作 我从我的记忆写同步,其方法和测试用户的默认值:

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

UserDefaults.standard.synchronize() 

编辑apple documentation

//注我们不会与文件系统或其他任何东西同步;当应用退出时,会发生这种情况 。有时候显式同步可能是必要的, 但通常不是。不必同步也可能是一个性能问题。

根据苹果的文档我了解(你也许不这么认为),如果你想获得运行时的价值,而不是将其保存在您的变量 - 你应该同步手动

再次编辑 谢谢到@LeoDabus我明白,也许它在运行时也可用。所以不要数我的答案

+2

没有必要强迫同步 –

+0

我相信这是最好的做法,以迫使它,在所有的例子和教程这就像.. 。除非有什么改变,我不知道... – Yitzchak

+0

告诉我一个来自苹果的地方,他们这样做。顺便说一句,我没有投票它 –

0

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

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

我怎样才能得到文本保存?当我改变视图控制器时,所有的数据都被擦除。 –

0

你应该试试这个保存文本框到UserDefaults:

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

如果你想获得该文本框值,则这样写:

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