我正在尝试在注册时检查用户是否已在我的应用程序中注册。对于每一次成功的注册,我都会在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?
答案 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")