我在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来获取数据,并且不确定这是否也是正确的方法。
答案 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
(也称为未指定),它不知道+
运算符。 "employer"
会导致语法错误(在Xcode 7.1 beta 2中已修复)。 编辑:
这种语法是常用的方法。
let isEmployer = currentUser["employer"]
print("isEmployer: \(isEmployer)")
或者,你也可以写
print("employer is " + String(currentUser["employer"] as! Bool))