保存和加载整数错误Swift

时间:2014-12-26 03:00:50

标签: ios xcode swift uiviewcontroller

我在保存和加载难度整数时遇到问题。我按下一个按钮来决定一个视图:

(这是一个难点)

Difficulty + 1

    let SecondDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
    SecondDefaults.setObject(Difficulty, forKey: "Difficulty")
    SecondDefaults.synchronize()

在viewDidLoad下的另一个视图中加载:

let SecondDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
        var difficulty = SecondDefaults.valueForKey("Difficulty")?.integerValue
        SecondDefaults.synchronize()
        Difficulty = difficulty!.stringByTrimmingCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet).toInt()!

2 个答案:

答案 0 :(得分:0)

您需要更改:

var difficulty = SecondDefaults.valueForKey("Difficulty") as? String

var difficulty = SecondDefaults.valueForKey("Difficulty")?.stringValue

我不知道你为什么需要将整数转换为字符串。您只需要以下代码从NSUserDefaults获取整数,无需将其转换为字符串。

let SecondDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var difficulty = SecondDefaults.valueForKey("Difficulty")?.integerValue

答案 1 :(得分:0)

你的问题在于这一行:

var difficulty = SecondDefaults.valueForKey("Difficulty") as? String

问题是该值可能是String,也可能是nil。谁知道? as?关键字表示强制转换可能会失败,因此难道是String可选,您可以隐式解包。你解开为nil的任何东西都会给你一个运行时错误。

假设您的第二个代码段中的Difficulty属于Int类型,这应该可行:

let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
let maybeDifficulty = defaults.valueForKey("Difficulty") as? Int
if let difficulty = maybeDifficulty {
  Difficulty = difficulty
} else {
  println("Difficulty is not an Int or may be nil")
}