2014-10-17 77 views
1

我正在使用下面的代码使用Swift将值设置为NSUserDefaults。以下是我的代码:objectForKey在Swift中返回nil为NSUserDefaults

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) 

由于某些原因,tickerVal为零。为什么是这样?据我所知,它应该返回“美元”。

+0

与解决类似的问题只是张贴在这里:http://stackoverflow.com/questions/26424240/save-data-of-a-label-in -swift/26425574#26425574 – 2014-10-17 22:51:12

回答

2

使用NSUserDefaults的NSDictionary的,而不是斯威夫特的字典类型。您可以键入明确作为tickerVal一个NSDictionary像这样:

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)") 
+0

This print“{\ n ticker = USD; \ n}” – 2014-10-17 23:06:29

+0

您想要打印什么?如果您只希望tickerVal为“USD”,请使用'let tickerVal:NSString =((NSUserDefaults.standardUserDefaults()。objectForKey(key))as NSDictionary)[key] as NSString' instead – connor 2014-10-17 23:09:01

+0

完美,谢谢! – 2014-10-17 23:10:19

0

这是相同的代码,将节省你时间:

var myValue:NSString = "USD" 

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

var myOutput: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("ticker") 
println(myOutput) 
+0

This print“Optional(USD)” – 2014-10-17 23:08:13