2014-06-05 38 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")!)