2014-08-29 48 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