Ios Swift-不继续执行方法
我在VC中开发了三个函数,如下所示:Ios Swift-不继续执行方法,ios,swift,firebase,Ios,Swift,Firebase,我在VC中开发了三个函数,如下所示: CheckUserName或MailTake(..) 支票已收(…) CheckUsernameTaked(…) 第一个,即CheckUsernameOreMailtake,调用自身内的其他两个,并通过完成返回一个结果,指示采用哪一个(基于int值,其中1=采用电子邮件,2=采用用户名)。代码如下: func checkUsernameOrEmailTaken(username: String, email:String, completion: (resu
func checkUsernameOrEmailTaken(username: String, email:String, completion: (result: Int) -> Void)
{
/*This function checks the result of both functions, checkEmailTaken and checkUsernameTaken*/
/*
return 1 = email is taken
return 2 = username is taken
*/
var inputTaken:Int = 0
print("Inside CheckUsernameOrEmailTaken")
self.checkEmailTaken(email, completion: { (result)->Void in
print("Finish Checking Email Taken")
if(result == true)
{
/*Email is taken*/
print("Email Taken")
inputTaken = 1
completion(result: inputTaken)
}else{
/*Email not taken*/
print("Email Available")
self.checkUsernameTaken(username, completion: { (result)->Void in
if(result == true)
{
inputTaken = 2
completion(result: inputTaken)
}else{
completion(result: 0)
}
})
}
})
}
func checkEmailTaken(email:String, completion: (result: Bool) -> Void)
{
print("Inside CheckEmailTaken")
//let reference = Firebase(url:"https://something.firebaseio.com/users/")
reference.queryOrderedByChild("email").queryEqualToValue("\(email)").observeEventType(.ChildAdded, withBlock: { snapshot in
if (snapshot.value["email"] != nil) {
print("Inside CheckEmailTaken ---- Taken")
completion(result: true)
}else{
print("Inside CheckEmailTaken ----- Available")
completion(result: false)
}
})
}
func checkUsernameTaken(username: String, completion: (result: Bool) -> Void)
{
//let reference = Firebase(url:"https://something.firebaseio.com/users/")
reference.queryOrderedByChild("username").queryEqualToValue("\(username)").observeEventType(.ChildAdded, withBlock: { snapshot in
if (snapshot.value["username"] != nil) {
completion(result: true)
}else{
completion(result: false)
}
})
}
在执行之前,我有很多print语句需要知道。我只在控制台中:
Inside CheckUsernameOrEmailTaken
Inside CheckEmailTaken
我有一个进度微调器,它不会因为调用没有继续而消失。它似乎在继续执行,但没有显示任何操作。在后端,我有
->users
->6dd077ac-dsds-4060-ac4f-dsdsdsdsdsds1
email: "kleina@outlook.com"
mobile: "32322332"
name: "Kleina"
username: "someone"
我在文本字段中输入的是不同的电子邮件,但用户名相同,即某人…并且它一直在运行。如果我尝试测试电子邮件是否存在,它会工作并显示电子邮件已被接收。请让我知道哪里出了错…我使用Firebase编写的第一个函数。请在Firebase查询中插入错误块,以查看是否存在错误翁:
ref.observeEventType(.Value, withBlock: { snapshot in
println(snapshot.value)
}, withCancelBlock: { error in
println(error.description)
})
当没有连接到db时,您也应该会出现错误。我会设置一个断点并逐步检查代码以查看挂起的位置。Firebase连接是否成功建立?@blacksheep_2011如何检查它?正如我所说的第一个真正适合我的代码,您需要学习如何使用Xcode调试器,它允许您设置断点并在运行时逐步检查代码,以查看变量的值,以便调试逻辑问题和崩溃。我建议您遵循教程:@robotcat谢谢您的建议,尽管您假设不知道如何使用它。添加了错误块…但它仍然没有继续到那里…它只显示相同的内容打印原始帖子中的语句。您是否尝试设置断点并单步执行代码?将尝试在位置之间移动一点,让您知道我使用了断点,并且它到达了引用。queryOrderedByChild(“电子邮件”)。queryQualtOvalue(“电子邮件”)然后跳到withCancelBlock,但从不打印其中的内容作为错误值?将断点设置为println行,然后在控制台中键入
po error