在swift中连接:二进制运算符'+'不能应用于'String'和'AnyObject'类型的操作数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在swift中连接:二进制运算符'+'不能应用于'String'和'AnyObject'类型的操作数相关的知识,希望对你有一定的参考价值。

我在Swift中遇到错误,当我这样做时不明白它:

if(currentUser [“雇主”]为!Bool == false){print(“雇主是假的:”+ currentUser [“雇主”]为!Bool)}

但我能做到(它实际上并没有打印任何东西,可能是另一个问题):

if(currentUser [“雇主”]为!Bool == false){print(currentUser [“雇主”])}

结果有误:

二进制运算符'+'不能应用于'String'和'AnyObject'类型的操作数

同理:

                let currentUser = PFUser.currentUser()!
                let isEmployer = currentUser["employer"]
                print("isEmployer: (isEmployer)")
                print(currentUser["employer"])

但这两个不起作用:

                print("employer: "+currentUser["employer"])
                print("employer: (currentUser["employer"])")

我也碰巧使用Parse来获取数据,并且不确定这是否也是正确的方法。

答案

在第一个示例中,错误消息可能会产生误导

if currentUser["employer"] as! Bool == false { 
 print("employer is false: "+currentUser["employer"] as! Bool) 
}

在这种情况下,错误消息应该是

二元运算符'+'不能应用于'String'和'Bool'类型的操作数

因为currentUser["employer"] as! Bool是一个非可选的Bool,不能隐含地投射到String

那些例子

print("employer: "+currentUser["employer"])
print("employer: (currentUser["employer"])")

不工作,因为

  • 在第一行中,没有任何类型转换的currentUser["employer"]是可选的AnyObject(又名未指定),它不知道+运算符。
  • 在第二行中,String插值表达式中的字符串文字"employer"导致语法错误(在Xcode 7.1 beta 2中修复)。

编辑:

这种语法是常用的方法。

let isEmployer = currentUser["employer"]
print("isEmployer: (isEmployer)")

或者,你也可以写

print("employer is " + String(currentUser["employer"] as! Bool))

以上是关于在swift中连接:二进制运算符'+'不能应用于'String'和'AnyObject'类型的操作数的主要内容,如果未能解决你的问题,请参考以下文章

代码转换 swift 2 --> 3 导致索引路径处的二进制运算符错误

'Pods-App'目标具有传递依赖关系,包括在swift框架中使用GTM时的静态二进制文件

如何在Swift中声明计算属性'throws'?

swift swift中的自定义整数运算符,允许您连接整数

Swift 高级运算符与枚举

Swift 中的指数运算符