快速注册时如何检查用户是否已经注册

时间:2019-11-02 08:13:49

标签: ios json swift if-statement keychainitemwrapper

我正在尝试在注册时检查用户是否已在我的应用程序中注册。对于每一次成功的注册,我都会在LoginViewcontroller url中获得一个UID,并将该UID保存在钥匙串包装中。我在RegistrationViewController regesterservice中检索UID值,但是当我尝试检查UID时,我一直都在获取nil。为什么..?如何检查用户是否已经注册?请帮助我。

LoginViewcontroller登录服务中,我这样保存UID值:

self.Uid = json["id"] as? String
KeychainWrapper.standard.set(emailL ?? "", forKey: "user_email")
KeychainWrapper.standard.set(self.Uid!, forKey: "Uid")

在这里,我在RegisterViewController中检索UID值。但是对于已经注册的人,UID也为零。为什么?

do {
    let userId: String? = KeychainWrapper.standard.string(forKey: "Uid")
    print("login userid \(userId)")

    if userId != nil{
        AlertFun.ShowAlert(title: "Title", message: "user exist", in: self)
    } else {
        let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [String: Any]
        print("go to otp service!!!")
        self.otpField = json["otp"] as? Int
    }
} catch {
    print("error")
}

如何查询已注册人员的UID?

1 个答案:

答案 0 :(得分:0)

在第一段代码中,json中的Uid变量与在钥匙串包装程序中设置的Uid属性不同。

var Uid = json["id"] as? String // `var Uid` is a local variable
KeychainWrapper.standard.set(self.Uid!, forKey: "Uid") // `self.Uid` is a property on self

您可以通过将属性设置为self来解决此问题,而不用创建单独的变量

self.Uid = json["id"] as? String
KeychainWrapper.standard.set(self.Uid!, forKey: "Uid")

编辑:

对不起,我不太理解您在说什么。但是我会尝试设置一个断点并像这样调试,然后看看哪个语句返回nil:

po json
po json["id"]
po json["id"] as? String
po self.Uid
po KeychainWrapper.standard.string(forKey: "Uid")