隐含地从'String?'强制表达了表达式 去任何

Dew*_*ara 40 string optional swift

我有一些像这样的错误"表达式隐式强制来自'String?' 任何"这是我的代码:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    FIRApp.configure()
    FIRAuth.auth()?.signIn(withEmail: "myemail@gmail.com", password: "mypassword", completion: { (user, error) in
        if (error != nil) {
            print(user?.email)
        }else {
            print(error?.localizedDescription)
        }
    })

    return true
}
Run Code Online (Sandbox Code Playgroud)

这一行出错

print(user?.email)
Run Code Online (Sandbox Code Playgroud)

print(error?.localizedDescription)
Run Code Online (Sandbox Code Playgroud)

请帮我

Luc*_*rti 41

print功能需要一组Any参数.String是一个Any.在这种情况下,Xcode告诉您它隐式地将可选字符串强制转换为Any对象(通过转换StringOptional(value)).

要避免此警告,您只需使用默认值或解包 String?

print(user?.email ?? "User instance is nil")
print(user!.email)
Run Code Online (Sandbox Code Playgroud)

  • 每次都写什么猴子作业??"" 至少或因为打印而导致您的应用程序崩溃。为什么它不能只在它变成零的地方打印零,就是这样? (3认同)
  • 当然,应用程序会崩溃.但在我对可选项的解释后,我认为这是隐含的 (2认同)