2014-06-05 37 views
3

我试图用Swift创建游戏,并且我想添加创建用户名的功能,该用户名将保存在NSUserDefaults中。这是我的代码:NSUserDefaults不保存TextField文本(Swift)

println("Textfield Text: \(usernameTextfield.text)") 

NSUserDefaults.standardUserDefaults().setObject(usernameTextfield.text, forKey:"Username") 
NSUserDefaults.standardUserDefaults().synchronize() 

println(NSUserDefaults.standardUserDefaults().objectForKey("Username") as? String) 

输出是:

文本字段文本名称:myusername

我可以看到,为什么它是印刷零,唯一的解释是否保存或加载用户名失败。有什么办法可以纠正或我做错了什么?

任何帮助表示赞赏!

+0

当你与一个字符串保存替换'username'。看看你是否得到相同的结果。 – 68cherries

+0

什么是变量“用户名”?确保它不复制任何nil值,我会用'NSUserDefaults.standardUserDefaults()。setObject(usernameTextfield.text,forKey:“Username”)''来代替。 – Simon

+0

用户名在代码中被声明为:var username = usernameTextfield.text; – nanothread59

回答

8
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) 
0

我对Swift 2.0和Xcode 6.4做了一个小小的修改。

节省:

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) 
    } 
0

在雨燕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. 
+0

我执行了此操作代码在我的xcode 8.它工作正常。仍然为什么它被拒绝投票。请随时评论,以便我可以提高自己。 –

0

为SWIFT 3.0,您可以创建用户默认情况下,

UserDefaults.standard.set("yourValue", forKey: "YourString") 

要以控制台打印值:

print(UserDefaults.standard.string(forKey: "YourString")!)