在swift中连接:二元运算符' +'不能应用于' String'类型的操作数和任何对象'

时间:2015-10-08 08:49:09

标签: parse-platform concatenation swift2

我在Swift中遇到错误,在执行此操作时无法理解:

  

if(currentUser ["雇主"]为!Bool == false){print("雇主是   false:" + currentUser ["雇主"]为!布尔)}

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

  

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来获取数据,并且不确定这是否也是正确的方法。

1 个答案:

答案 0 :(得分:5)

在第一个示例

中,错误消息可能会产生误导
if currentUser["employer"] as! Bool == false { 
 print("employer is false: "+currentUser["employer"] as! Bool) 
}

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

  

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

因为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))