2015-07-10 97 views
0

当我尝试根据下面的设置设置一个常量时,结果为可选(“值”)。如何将NSUserDefault设置设置为实例变量?

let accesstoken = NSUserDefaults.standardUserDefaults().stringForKey("accessToken") 
let userId = NSUserDefaults.standardUserDefaults().stringForKey("userId") 

如果我像下面这样做,我会得到一个错误,说明在其初始值内使用的变量。我似乎无法在这里取胜。我究竟做错了什么?

var accesstoken = String() 
var userId = Int() 


if let atString = NSUserDefaults.standardUserDefaults().stringForKey("accessToken") { 
    accesstoken = atString 
} 

if let userIdString = NSUserDefaults.standardUserDefaults().stringForKey("userId") { 
    userId = userIdString 
} 

回答

1

你可以用只读的计算属性结合nil coalescing operator“??”来实现你想要的。试试这样:

var accessToken: String { 
    return NSUserDefaults().stringForKey("accessToken") ?? "" 
} 

var userId: String { 
    return NSUserDefaults().stringForKey("userId") ?? "" 
} 

,或者如果你需要一个Int为您的用户ID

var userId: Int { 
    return NSUserDefaults().integerForKey("userId") 
} 
+0

什么呢?在“”部分结尾呢? –

+0

它检查密钥是否有值,如果没有值而不是返回零,您可以为密钥定义默认值 –

+0

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual /Swift_Programming_Language/BasicOperators.html#//apple_ref/doc/uid/TP40014097-CH6-ID72 –