Ios 如何在解析中使用重复用户名检查注册
我正在使用以下代码通过Swift注册解析帐户Ios 如何在解析中使用重复用户名检查注册,ios,swift,parse-platform,Ios,Swift,Parse Platform,我正在使用以下代码通过Swift注册解析帐户 var user = PFUser() user.username = self.userNameText.text user.password = self.paswordText.text user["mobileNumber"] = self.mobileNo as! String // user["authCode"] = self.authCode as! String user["deviceId"] = deviceId sel
var user = PFUser()
user.username = self.userNameText.text
user.password = self.paswordText.text
user["mobileNumber"] = self.mobileNo as! String //
user["authCode"] = self.authCode as! String
user["deviceId"] = deviceId
self.user.signUpInBackgroundWithBlock({
(success:Bool, error:NSError?) -> Void in
if (error == nil) {
let installation:PFInstallation = PFInstallation.currentInstallation()
installation["user"] = PFUser.currentUser()
installation.saveInBackgroundWithBlock({
(success:Bool, error:NSError?) -> Void in
if (error == nil) {
println("Installion Success")
} else {
println("Installation Error")
}
})
println("Singup Success")
} else {
println(" error = \(error)")
}
})
在这个例子中,如果输入的用户名已经保存在Parse中,我想给出一个错误,但是现在它成功地用两个相同的用户名注册了
我怎样才能避免呢
如果要检查用户是否已通过Parse.com注册,则必须在用户表中进行查询。如果用户已存在,则不允许他再次注册
希望这对你有帮助试试这个
var query = PFQuery(className:"User")
query.whereKey(key: "username", equalTo:self.userNameText.text)
query.getFirstObjectInBackgroundWithBlock { (object: [AnyObject]?, error: NSError?) -> Void in
if object != nil
{
//User exist
//give appropriate message
}
else
{
//User don`t exist"
//call signup method from here
self.signUpNewUser()
}
}
新用户注册
func signUpNewUser()
{
var user = PFUser()
user.username = self.userNameText.text
user.password = self.paswordText.text
user["mobileNumber"] = self.mobileNo as! String //
user["authCode"] = self.authCode as! String
user["deviceId"] = deviceId
self.user.signUpInBackgroundWithBlock({
(success:Bool, error:NSError?) -> Void in
if (error == nil) {
let installation:PFInstallation = PFInstallation.currentInstallation()
installation["user"] = PFUser.currentUser()
installation.saveInBackgroundWithBlock({
(success:Bool, error:NSError?) -> Void in
if (error == nil) {
println("Installion Success")
} else {
println("Installation Error")
}
})
println("Singup Success")
} else {
println(" error = \(error)")
}
})
}
或者,使用云代码钩子,这样在成功案例中只需发出1个API请求,而不是2个请求。与其在Parse中检查用户表,难道没有一种简单的方法可以让Parse本身在重复名称上返回错误吗?不幸的是,令人惊讶的是,Parse尚未处理重复名称的检查。。。如果您使用默认的解析用户名,那么它不应该允许使用相同的用户名,这必须是“解析没有做的最明显的事情,它们应该做的事情”。这仅适用于您提交具有相同用户名的第二个用户,而另一个用户当前正在后台注册的情况
func signUpNewUser()
{
var user = PFUser()
user.username = self.userNameText.text
user.password = self.paswordText.text
user["mobileNumber"] = self.mobileNo as! String //
user["authCode"] = self.authCode as! String
user["deviceId"] = deviceId
self.user.signUpInBackgroundWithBlock({
(success:Bool, error:NSError?) -> Void in
if (error == nil) {
let installation:PFInstallation = PFInstallation.currentInstallation()
installation["user"] = PFUser.currentUser()
installation.saveInBackgroundWithBlock({
(success:Bool, error:NSError?) -> Void in
if (error == nil) {
println("Installion Success")
} else {
println("Installation Error")
}
})
println("Singup Success")
} else {
println(" error = \(error)")
}
})
}