在我的主ViewController中,我有这个:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
println("VIEW CONTROLLER DID APPEAR")
var currentUser = PFUser.currentUser()
println(currentUser)
if (!currentUser) {
self.presentLogInController()
} else {
println("VALID USER")
}
}
当我运行应用程序时,此行会引发错误:
if (!currentUser) {
说EXC_BAD_INSTRUCTION
但是,输出窗口显示:
VIEW CONTROLLER DID APPEAR
<PFUser:TzzzzzzaHx:(null)> {
email = "blah@blah.bla";
username = mmm;
}
VALID USER
鉴于代码执行超出了XCode所说的导致EXC_BAD_INSTRUCTION的行,它看起来不像是一个严重的错误,尽管它会导致模拟器&amp;真正的设备崩溃。
有关如何调试的建议吗?
找到解决方案
if let user = PFUser.currentUser() {
println("VALID USER")
println(user)
println(user["email"])
println(user["completedTour"])
if !user["completedTour"] {
println("NO TOUR YET")
}
} else {
self.presentLogInController()
}
答案 0 :(得分:3)
if (!currentUser)
... currentUser
是Bool
?不见得。您不能在Objective-C
假设PFUser.currentUser()
返回一个隐式解包的可选项,您需要检查nil。
if currentUser != nil { ... }
答案 1 :(得分:1)
好像你正在处理一个像客观一样的快速问题。由于PFUser.currentUser()返回PFUser或nil,因此必须包含在可选变量中。
var currentUser = PFUser.currentUser()
然后,您可以使用if语句检查可选项是否包含值。
if currentUser {
println("VALID USER")
} else {
self.presentLogInController()
}
如果要在if块中使用currentUser的值,则应使用if let语句。 if let user = currentUser {...}
如果它有一个值,它将解包该可选项,以便您可以处理该值本身。