nanothread
nanothread

Reputation: 908

NSUserDefaults Not Saving TextField Text (Swift)

I'm trying to create a game with Swift, and I want to add the ability to create a username, which will be saved in NSUserDefaults. This is my code:

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

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

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

The output is:

Textfield Text: MyUsername

nil

The only explanation I can see as to why it is printing nil is that either the saving or the loading of the username is failing. Is there any way this can be corrected or am I doing something wrong?

Any help is appreciated!

Upvotes: 3

Views: 10041

Answers (5)

soft_programmer
soft_programmer

Reputation: 11

In Swift 4.1

 UserDefaults.standard.set(textfield.text, forKey: "yourKey") // saves text field text
  UserDefaults.standard.synchronize()

// To Retrieve
textfield.text = UserDefaults.standard.value(forKey:"yourKey") as? String

Upvotes: 1

Ram Madhavan
Ram Madhavan

Reputation: 2388

For swift 3.0, You can create user default by,

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

To Print the value in console :

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

Upvotes: 0

Ashok R
Ashok R

Reputation: 20766

In 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.

Upvotes: 0

Alvin George
Alvin George

Reputation: 14296

I made a small modification to Roman's answer with Swift 2.0 and Xcode 6.4.

saving:

    var myValue:NSString = usernameTF.text

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

retrieving:

var myOutput = NSUserDefaults.standardUserDefaults().objectForKey("Username")
if (myOutput != nil)
{
    self.title = "Welcome "+((myOutput) as! String)
    }

Upvotes: 0

HTron
HTron

Reputation: 366

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)

Upvotes: 8

Related Questions