Swift NSUserDefaults不保存Dictionary

时间:2014-09-19 20:54:05

标签: ios iphone swift ios8 nsuserdefaults

这是我的代码。我已经解决了这个错误一个月但仍然没有解决。

这是我的代码。

 var color : String = ""
 var colorSentDictionary = Dictionary<String, Int>()

 override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    // load colorSentDictionary
    self.loadColorSentDictionary()

}


func loadColorSentDictionary () {

    // load total messages sent
    var defaults : NSUserDefaults = NSUserDefaults.standardUserDefaults()
    if (defaults.dictionaryForKey("colorSentDictionary") != nil) {
        var colorSentDictionary : NSDictionary = defaults.dictionaryForKey("colorSentDictionary")!
        self.colorSentDictionary = colorSentDictionary as Dictionary
    }
}

func saveColorSentDictionary () {

    // save total messages received
    var defaults : NSUserDefaults = NSUserDefaults.standardUserDefaults()
    var colorSentDictionary : NSDictionary = self.colorSentDictionary
    defaults.setObject(colorSentDictionary, forKey: "colorSentDictionary")
    defaults.synchronize()


    if (defaults.dictionaryForKey("colorSentDictionary") != nil) {
        println("It is not nil !!!!!!!!!") } else { println("It is nil") }
}


@IBAction func sendMessage(sender : AnyObject) {

self.color = "Yellow"

println("The color of the message is: \(self.color)")

    // add value to messageSentDictionary
    if (self.colorSentDictionary["\(self.color)"] != nil) {
        var colorSentCount : Int = self.colorSentDictionary[self.color]!
        self.colorSentDictionary["\(self.color)"] = colorSentCount+1
        println("It exists")
    } else {
        self.colorSentDictionary["\(self.color)"] = 1
        println("Not exist")
    }

    self.saveColorSentDictionary()

    self.navigationController!.popToRootViewControllerAnimated(true)
}

每当我触发save方法时,总是不保存colorSentDictionary。日志打印“It is nil”,因为它找不到密钥“colorSentDictionary”。

但是如果我在viewWillAppear中放置self.saveColorSentDictionary(),则保存字典并且日志打印出“它不是零!!!!!!!!”。

我认为这个问题很奇怪但是我不认为这是一个错误,因为我在Xcode 6的正式发布版本中进行了测试。有人可以帮我解决这个问题吗?谢谢:))

0 个答案:

没有答案