使用 Swift 和 Parse 在 Bool 上使用“==”检查用户验证会抛出错误
Checking user verification using '==' on a Bool throws error using Swift and Parse
我正在尝试检查是否有用户,他们是否已经验证了他们的帐户(通过 phone 号码),如果有,他们让他们继续,但如果有用户没有验证了他们的 phone 号码 继续他们验证他们的 phone 号码。我的问题是我在 Parse User class 中将 "phoneNumberVerified" 设置为 Bool 但随后我尝试使用 if 语句进行检查我得到错误:二元运算符'=='不能应用于操作数输入 'AnyObject!' 和 'Bool'
检查用户和验证状态的代码:
override func viewDidLoad() {
super.viewDidLoad()
var currentUser = PFUser.currentUser()
if currentUser == nil || currentUser!["phoneNumberVerified"] == nil {
performSegueWithIdentifier("showInitialView", sender: self)
} else {
if let numberIsVerified = currentUser!["phoneNumberVerified"] as? Bool {
if currentUser != nil && numberIsVerified == false {
performSegueWithIdentifier("showVerifyUserView", sender: self)
} else if currentUser != nil && numberIsVerified == true {
performSegueWithIdentifier("showMyPostsView", sender: self)
} else {
performSegueWithIdentifier("showInitialView", sender: self)
}
}
}
}
}
我认为您应该尝试将其向下转换为 Bool
override func viewDidLoad() {
super.viewDidLoad()
if let currentUser = PFUser.currentUser() {
if let numberIsVerified = currentUser["phoneNumberVerified"] as? Bool {
if numberIsVerified == false {
performSegueWithIdentifier("showVerifyUserView", sender: self)
} else if numberIsVerified == true {
performSegueWithIdentifier("showMyPostsView", sender: self)
} else {
performSegueWithIdentifier("showInitialView", sender: self)
}
}
}
}
@Paulw11 给了你一个很好的提示。
您需要比较 Swift 中的等值类型,因此如果您将布尔值存储为当前解析用户的一部分,则需要将其转换为这样。
您甚至可以在括号中就地完成:
(currentUser!["phoneNumberVerified"] as! Bool)
我不记得 Parse 是如何存储 bool 的,以及这些类型是否直接兼容,但这应该能让你走上正轨。关键是类型需要相同(或在某些情况下从相同的地方继承)才能公平。
我正在尝试检查是否有用户,他们是否已经验证了他们的帐户(通过 phone 号码),如果有,他们让他们继续,但如果有用户没有验证了他们的 phone 号码 继续他们验证他们的 phone 号码。我的问题是我在 Parse User class 中将 "phoneNumberVerified" 设置为 Bool 但随后我尝试使用 if 语句进行检查我得到错误:二元运算符'=='不能应用于操作数输入 'AnyObject!' 和 'Bool'
检查用户和验证状态的代码:
override func viewDidLoad() {
super.viewDidLoad()
var currentUser = PFUser.currentUser()
if currentUser == nil || currentUser!["phoneNumberVerified"] == nil {
performSegueWithIdentifier("showInitialView", sender: self)
} else {
if let numberIsVerified = currentUser!["phoneNumberVerified"] as? Bool {
if currentUser != nil && numberIsVerified == false {
performSegueWithIdentifier("showVerifyUserView", sender: self)
} else if currentUser != nil && numberIsVerified == true {
performSegueWithIdentifier("showMyPostsView", sender: self)
} else {
performSegueWithIdentifier("showInitialView", sender: self)
}
}
}
}
}
我认为您应该尝试将其向下转换为 Bool
override func viewDidLoad() {
super.viewDidLoad()
if let currentUser = PFUser.currentUser() {
if let numberIsVerified = currentUser["phoneNumberVerified"] as? Bool {
if numberIsVerified == false {
performSegueWithIdentifier("showVerifyUserView", sender: self)
} else if numberIsVerified == true {
performSegueWithIdentifier("showMyPostsView", sender: self)
} else {
performSegueWithIdentifier("showInitialView", sender: self)
}
}
}
}
@Paulw11 给了你一个很好的提示。
您需要比较 Swift 中的等值类型,因此如果您将布尔值存储为当前解析用户的一部分,则需要将其转换为这样。
您甚至可以在括号中就地完成:
(currentUser!["phoneNumberVerified"] as! Bool)
我不记得 Parse 是如何存储 bool 的,以及这些类型是否直接兼容,但这应该能让你走上正轨。关键是类型需要相同(或在某些情况下从相同的地方继承)才能公平。