1

I am using the following code to set a value into NSUserDefaults using Swift. Here is my code:

let key = "ticker"
let currencyTickerData = [key:"USD"]
NSUserDefaults.standardUserDefaults().setObject(currencyTickerData, forKey: key)
NSUserDefaults.standardUserDefaults().synchronize()

let tickerVal : [NSString]? = (NSUserDefaults.standardUserDefaults().objectForKey(key)) as? [NSString]

print(tickerVal)

For some reason, tickerVal is nil. Why is this? As far as I can tell, it should return "USD."

  • a similar question with solution was just posted here: http://stackoverflow.com/questions/26424240/save-data-of-a-label-in-swift/26425574#26425574 – Steve Rosenberg Oct 17 '14 at 22:51

2 Answers2

2

NSUserDefaults uses NSDictionary instead of Swift's dictionary type. You can explicitly type tickerVal as an NSDictionary like so:

let key = "ticker"
let currencyTickerData: NSDictionary = [key:"USD"]
NSUserDefaults.standardUserDefaults().setObject(currencyTickerData, forKey: key)
NSUserDefaults.standardUserDefaults().synchronize()

let tickerVal = (NSUserDefaults.standardUserDefaults().objectForKey(key)) as NSDictionary

print("\(tickerVal)")
Connor Pearson
  • 63,902
  • 28
  • 145
  • 142
0

It is same code that will save you're date:

var myValue:NSString = "USD"

NSUserDefaults.standardUserDefaults().setObject(myValue, forKey:"ticker")
NSUserDefaults.standardUserDefaults().synchronize()

var myOutput: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("ticker")
println(myOutput)
Oleg Gordiichuk
  • 15,240
  • 7
  • 60
  • 100