【问题标题】:How to get value of optional in Swift如何在 Swift 中获取可选值
【发布时间】:2022-11-12 06:51:40
【问题描述】:
let userId = UserDefaults.standard.string(forKey: "userId")
let path = "images/\(userId!)/\(UUID().uuidString).jpg"

我有这个代码,我指定一个路径,通过使用用户身份.但由于它存储在UserDefaults 中,因此它是可选的。但是当我强制打开它时,我得到了这个:

可选(一些值)代替一些价值

关于如何获得价值的任何想法?

更新这就是我最初存储值的方式:

func verifyCode(code: String) {

self.isLoadingVerify.toggle()

let verificationId = UserDefaults.standard.string(forKey: "verificationId") ?? ""
let credentials = PhoneAuthProvider.provider().credential(withVerificationID: verificationId, verificationCode: code)

Auth.auth().signIn(with: credentials) { (authResult, error) in
    
    self.isLoadingVerify.toggle()
    
    if error != nil {
        self.isError.toggle()
        self.errorMsg = error?.localizedDescription ?? ""
        return
    }
    
    print(authResult ?? "")
    
    self.userId = String(describing: authResult?.user.uid)
    
    self.isVerify.toggle()
    self.isVerified.toggle()
}

}

【问题讨论】:

    标签: swift string


    【解决方案1】:

    你的代码sn-p:

    let userId = UserDefaults.standard.string(forKey: "userId")
    let path = "images/(userId!)/(UUID().uuidString).jpg"
    

    会导致两种情况:

    1. 如果“用户身份" 为 nil,则强制展开将导致应用程序崩溃
    2. 如果“用户身份" 有值,然后强制展开返回没有“可选”字的字符串

      只有当“用户身份" 不会强制展开:

      let path = "images/(userId)/(UUID().uuidString).jpg"
      

      在创建问题时,您可能传递了错误的代码 sn-p 或字符串输出。

    【讨论】:

      猜你喜欢
      • 2020-03-07
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多