swift - 为什么我要强制转换 String?对于 Any,Xcode 会发出警告,但对于 AnyObject 则不会?

标签 swift option-type any anyobject

此代码给出警告“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/

相关文章:

SQL - 查找只喜欢同年级学生的学生成绩

swift - 从 Realm 结果 Swift 中将 Int 转换为字符串

javascript - 如何在 JavaScript 中查找数组中的任何元素是否在 50 到 99 之间的范围内?

ruby-on-rails - Rails "any?"实例方法回调?

ios - 在改变它们的同时传递 JSON 对象

c++ - 使用三元运算符初始化 boost::optional

swift - 似乎无法避免在 Swift 中强制展开

ios - 自定义tabbar的更多按钮

ios - Kinvey 3.3.5 SDK 按 ID 查询

swift - 无法在符合协议(protocol)的类上调用类型方法