3

我正在尝试使用 Swift 创建游戏,并且我想添加创建用户名的功能,该用户名将保存在 NSUserDefaults 中。这是我的代码:

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

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

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

输出是:

文本字段文本:我的用户名

我能看到的关于为什么打印 nil 的唯一解释是用户名的保存或加载失败。有什么办法可以纠正这个问题还是我做错了什么?

任何帮助表示赞赏!

4

5 回答 5

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)
于 2014-06-06T03:11:49.840 回答
1
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
于 2018-03-27T16:15:24.533 回答
0

对于 swift 3.0,您可以通过以下方式创建用户默认值,

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

在控制台中打印值:

print(UserDefaults.standard.string(forKey: "YourString")!)
于 2016-11-24T09:15:14.160 回答
0

在 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.
于 2016-09-14T02:49:37.713 回答
0

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

保存:

    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)
    }
于 2015-09-03T07:08:16.803 回答