【发布时间】:2015-12-19 01:23:15
【问题描述】:
用户登录后,如果他们后来决定要更改用户名,他们可以这样做。当我保存记录时,我发现用户名已经存在并且电子邮件已经存在的解析错误。
我遇到的问题是,如果用户决定在应用程序将“错误用户名”保留在缓存中并在整个应用程序中显示之后不更改他们的信息。
我已尝试调用 PFUser.currentUser().fetch(),如下所示,从数据库中的内容刷新它,但无济于事。
唯一有效的方法是退出并重新登录以使其恢复到数据库中的内容。
有什么想法吗?
这是我的代码来捕获用户名错误并尝试刷新 PFUser
func saveUser() {
let username = nameField.text
let firstname = firstNameField.text! as String
let lastname = lastNameField.text! as String
let profilemsg = profileMessage.text! as String
let email = emailField.text! as String
if username!.characters.count > 0 {
let user = PFUser.currentUser()
if let user = user {
user["username"] = username
user["first"] = firstname
user["last"] = lastname
user["greeting"] = profilemsg
user["email"] = email
}
user!.saveInBackgroundWithBlock {(success: Bool, error: NSError?) -> Void in
if (success) {
ProgressHUD.showSuccess("Saved")
} else {
let errorCode = error!.code
switch errorCode {
case 202:
ProgressHUD.showError("Username " + username! + " already taken")
self.nameField.text = nil
do
{
try PFUser.currentUser()!.fetch()
print("User refreshed")
}
catch{
}
break
case 203:
ProgressHUD.showError("E-mail " + email + " already taken")
self.emailField.text = nil
do
{
try PFUser.currentUser()!.fetch()
print("User refreshed")
}
catch{
}
break
default:
ProgressHUD.showError("Network Error")
break
}
}
}
} else {
ProgressHUD.showError("Userame field must not be empty")
}
}
【问题讨论】:
标签: swift parse-platform