gpt4 book ai didi

ios - 检查 `if let` 是否为零

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:00 25 4
gpt4 key购买 nike

我有一个应用程序,我目前正在使用 SwiftKeychainWrapper .下面是我检查 retrievedString 是否为 nil 的代码。但是,我仍然在控制台中收到 retrievedString: nil

if-let 语句中的代码不应该运行,还是我对 if-let 的使用/理解不正确?

对于给定的示例,使用 if-let 解包我的可选值的正确方法是什么?

if let retrievedString: String? = KeychainWrapper.stringForKey("username") {
print("retrievedString: \(retrievedString)")
//value not nil
} else {
//Value is nil
}

最佳答案

这是因为您正在将可选字符串 String? KeychainWrapper.stringForKey("username") 的值设置为另一个可选字符串 retrievedString.

通过尝试将一个 String? 设置为另一个 String?,if let 检查总是成功,即使值为 nil,因为这两种类型是相同的,并且都可以接受 nil 值。

相反,您应该尝试将可选字符串 String? 设置为非可选字符串 String。当 Swift 尝试将非可选的 String 设置为 nil 时,它将失败,因为非可选的不能有 nil 值。然后代码将在 else 语句中继续

你应该使用

//notice the removal of the question mark
// |
// v
if let retrievedString: String = KeychainWrapper.stringForKey("username") {
print("retrievedString: \(retrievedString)")
//value not nil
} else {
//value is nil
}

关于ios - 检查 `if let` 是否为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35518417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com