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

+0

Спасибо за ответ. Это строка, поэтому я не вижу причин, почему она не работает. Да, я должен был сделать быстрый поиск, прежде чем спрашивать. – user3746428

+0

Ах! Я понятия не имел, что Swift Strings не разрешены. Тогда я попробую NSString. – user3746428

ответ

1

Если вы сохраните String, используя setObject(), то при его получении используйте objectForKey(). я был в состоянии спасти Swift «s String в NSUserDefaults

Это прекрасно работает с использованием 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

Вам нужно «синхронизировать» userDefaults в методе 'saveValue'? – sbarow

+0

№ Но вы можете это сделать, если это необходимо. – azimov

Смежные вопросы