2015-07-10 117 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 –