2014-08-29 46 views
0

我一直有一个NSUserDefaults的奇怪的问题通过。我只是试图保存一个字符串,但它保持空白。没有数据正通过NSUserDefaults的

当我关闭应用程序,然后重新打开并加载NSUserDefaults的从字符串,不管是什么我已经输入不显示在我使用的标签什么。我知道该字符串在通过NSUserDefaults之前包含正确的数据,因为我曾尝试将它放入println中。

这里是我的代码是相关的字符串:

formattedNumberTotal = formatter.stringFromNumber(currencyDouble) 
    println(formattedNumberTotal) 
    NSUserDefaults.standardUserDefaults().setObject(formattedNumberTotal, forKey: "userInitialBudget") 

override func viewWillAppear(animated: Bool) { 
     totalBudgetDisplay.text = NSUserDefaults.standardUserDefaults().stringForKey("userInitialBudget") 
} 

我有我交给完全相同的方式与其他变量,他们的工作绝对罚款。所以我看不出问题发生在哪里。

+0

什么是'formattedNumberTotal'的类型? 'NSUserDefaults'只能机智的类型数量有限:'NSData','NSString','NSNumber','NSDate','NSArray','NSDictionary'和这些的组合。不允许使用Swift String,Array或Dictionary。请注意,这是一个非常受欢迎的问题,有点搜索会提供答案。 – zaph 2014-08-29 01:39:59

+0

感谢您的回复。这是一个字符串,所以我没有理由不工作。是的,我应该在询问之前做一个快速搜索。 – user3746428 2014-08-29 01:42:18

+0

啊!我不知道Swift Strings是不允许的。然后我会尝试一下NSString。 – user3746428 2014-08-29 01:43:38

回答

1

如果使用setObject()节省String那么当您检索它使用objectForKey()。 我能救SwiftStringNSUserDefaults

这正常使用Xcode6 beta6:

func saveValue(value: AnyObject, forKey: String) { 
    NSUserDefaults.standardUserDefaults().setObject(value, forKey: forKey); 
} 

func getValue(#key: String) -> AnyObject? { 
    return NSUserDefaults.standardUserDefaults().objectForKey(key); 
} 
+0

您是否需要''同步''saveValue'方法中的userDefaults? – sbarow 2014-08-29 07:37:30

+0

不,但是如果有必要的话,你可以做到。 – azimov 2014-08-29 07:39:35