class OAuthToken: NSObject, NSCoding {
var refreshToken: String?
var accessToken: String?
var scope: String?
convenience init?(refreshToken: String?, accessToken: String?, scope:String) {
self.init()
if let acutalRefreshToken = refreshToken as String? {
self.refreshToken = acutalRefreshToken
} else {
return nil
}
if let actualAccessToken = accessToken as String? {
self.accessToken = actualAccessToken
}else {
return nil
}
self.scope = scope
}
convenience init?(attributes: Dictionary<String,AnyObject>, scope: String) {
var aRefreshToken: String!
var anAccessToken: String?
aRefreshToken = attributes["refresh_token"] as String?
anAccessToken = attributes["access_token"] as String?
let token = self.init(refreshToken: aRefreshToken, accessToken: anAccessToken, scope: scope) as OAuthToken // () is not convertible to OAuthToken
if token != nil {
storeInKeyChain()
} else {
return nil
}
}
}
当你在另一个内部调用一个嵌套的可失败初始化器时,你如何检查一个可失败初始化器是否为 nil?
let token = self.init(refreshToken: aRefreshToken, accessToken: anAccessToken, scope: scope)
想要返回类型为 ()
的对象,不能强制转换为我的课。我如何才能使用此模式并仅在实际创建成功时才将对象存储到钥匙串(keychain)?
最佳答案
我认为,当您调用父类(super class)的可失败初始化程序时,如果失败,它会隐式返回。
事实上关于Failable Initializers的文档指出:
If the superclass initialization fails because of an empty name value, the entire initialization process fails immediately and no further initialization code is executed
关于swift - 如何在 Swift 中使用嵌套的便利可失败初始值设定项检查 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27150329/