此代码给出警告“Expression implicited coerced from 'String?'给任何人。”
let email : String?;
let password : String?;
let dict = ["email": email, "password": password] as [String: Any];
但是这段代码没有。
let email : String?;
let password : String?;
let dict = ["email": email, "password": password] as [String: AnyObject];
为什么?我怎样才能让 Any
不会因为像 AnyObject
这样的 optional 而打扰我?
编辑:
这段代码也没有给出警告:
let email : String;
let password : String;
let dict = ["email": email, "password": password] as [String: Any];
但在这种情况下,我需要能够合并对象和可选性。似乎只有当变量类型是对象 和 可选时才会出现警告。
最佳答案
根据 Swift Language Guide在将 optional 转换为 Any 时,您应该会收到警告(请参阅页面底部的注释)。您可以通过将可选值转换为 Any
来消除警告,如下所示。
let email : String?;
let password : String?;
let dict = ["email": email as Any, "password": password as Any] as [String: Any];
关于swift - 为什么我要强制转换 String?对于 Any,Xcode 会发出警告,但对于 AnyObject 则不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48638005/