Cocoa touch NSUserDefault不保存文本字段文本(Swift)
我正在尝试用Swift创建一个游戏,我想添加创建用户名的功能,该功能将保存在NSUserDefaults中。这是我的代码:Cocoa touch NSUserDefault不保存文本字段文本(Swift),cocoa-touch,nsuserdefaults,swift,xcode6,Cocoa Touch,Nsuserdefaults,Swift,Xcode6,我正在尝试用Swift创建一个游戏,我想添加创建用户名的功能,该功能将保存在NSUserDefaults中。这是我的代码: println("Textfield Text: \(usernameTextfield.text)") NSUserDefaults.standardUserDefaults().setObject(usernameTextfield.text, forKey:"Username") NSUserDefaults.standard
println("Textfield Text: \(usernameTextfield.text)")
NSUserDefaults.standardUserDefaults().setObject(usernameTextfield.text, forKey:"Username")
NSUserDefaults.standardUserDefaults().synchronize()
println(NSUserDefaults.standardUserDefaults().objectForKey("Username") as? String)
输出为:
Text字段Text:MyUsername
零
关于为什么打印nil,我能看到的唯一解释是用户名的保存或加载失败。有没有什么方法可以纠正这个问题,或者我做错了什么
感谢您的帮助 我用Swift 2.0和Xcode 6.4对Roman的答案做了一点修改
println("Textfield Text: \(usernameTextfield.text)")
var myValue:NSString = usernameTextfield.text
NSUserDefaults.standardUserDefaults().setObject(myValue, forKey:"Username")
NSUserDefaults.standardUserDefaults().synchronize()
var myOutput: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("Username")
println(myOutput)
保存:
var myValue:NSString = usernameTF.text
NSUserDefaults.standardUserDefaults().setObject(myValue, forKey:"Username")
NSUserDefaults.standardUserDefaults().synchronize()
var myOutput = NSUserDefaults.standardUserDefaults().objectForKey("Username")
if (myOutput != nil)
{
self.title = "Welcome "+((myOutput) as! String)
}
检索:
var myValue:NSString = usernameTF.text
NSUserDefaults.standardUserDefaults().setObject(myValue, forKey:"Username")
NSUserDefaults.standardUserDefaults().synchronize()
var myOutput = NSUserDefaults.standardUserDefaults().objectForKey("Username")
if (myOutput != nil)
{
self.title = "Welcome "+((myOutput) as! String)
}
在Swift 3.0中
let userDefult = UserDefaults.standard //returns shared defaults object.
if let userName = usernameTextfield.text {
//storing string in UserDefaults
userDefult.set(userName, forKey: "userName") //Sets the value of the specified default key in the standard application domain.
}
print(userDefult.string(forKey: "userName")!)//Returns the string associated with the specified key.
对于swift 3.0,您可以通过以下方式创建用户默认值:
UserDefaults.standard.set("yourValue", forKey: "YourString")
要在控制台中打印值,请执行以下操作:
print(UserDefaults.standard.string(forKey: "YourString")!)
使用字符串文字保存用户名时,请将其替换为
username
。看看是否得到相同的结果。变量“username”是什么?确保它不复制任何nil值,我将使用NSUserDefaults.standardUserDefaults().setObject(usernameTextfield.text,forKey:“Username”)
而不是。Username在代码中的前面声明为:var Username=usernameTextfield.text;我必须做textfield.text
获取单元测试的未包装值。可能需要打开值notesynchronize()
不再需要,苹果不鼓励使用它:我在我的xcode 8上执行了这段代码。它工作得很好。仍然是它被否决的原因。请随时发表评论,以便我可以提高自己。