Как очистить общий словарь, из-за которого сохраненные значения не очищаются даже при входе в систему с другим пользователем - PullRequest
1 голос
/ 09 мая 2019

Как очистить общий словарь при выходе из системы, в котором я сохраняю ответ при входе?

Вот код, который я делаю для получения статуса 1.

                        if(status == 1)
                        {
                            DispatchQueue.main.async {
                                GAReusableClass.sharedInstance.hideActivityIndicator()
                                UserDefaults.standard.set(self.DataDict, forKey:MaindataKey)
                                let Dict = self.mainDict[KData] as!  [String: AnyObject]
                                print("self.DataDict", self.DataDict)
                                let User_ID = Dict[KUuid]as! String
                                print(User_ID)
                                let HMACSECRETKEY = self.deviceToken + "+" + User_ID
                                kHMACKey = HMACSECRETKEY
                                let cipher:String = CryptoHelper.encrypt(input:HMACSECRETKEY)!;
                                print(HMACSECRETKEY)
                                UserDefaults.standard.setValue(cipher, forKey:HmacKey)
                                UserDefaults.standard.set(true, forKey: "isLogin")
                                GAloginUserInfo.shared.saveUserInfo(dict: Dict )
                                let tabar = self.storyboard?.instantiateViewController(withIdentifier: "GAtHomeTabbarViewController") as! GAtHomeTabbarViewController
                                self.navigationController?.pushViewController(tabar, animated: true)

                            }

Вот общий словарь, который я использую для сохранения значений ответа при входе в систему.

import UIKit
import Firebase
class GAloginUserInfo: NSObject {
    var loginUserMobileNo : String?
    var loginUserId : String?
    var loginUserUuid : String?
    var loginUserCountry : String?
    var loginUserCountryCode : String?
    var loginUserEmail : String?
    var loginUserlatitude : String?
    var loginUserLongitude : String?
    var loginUserName : String?
    var loginUserQrcode : String?
    var loginUserProfilePic : String?
    var isverify : String?
    var loginPassword : String?
    var dateOfBirth: String?
    var earnedPoints:String?
    var loginUserGender:String?
    var loginUserFollowers:Int = 0

    static let shared = GAloginUserInfo()
    func saveUserInfo (dict : [String : AnyObject?] )  {


        if let loginUserMobileNo = dict["mobile"] as? String {
            self.loginUserMobileNo = loginUserMobileNo
        }
        if let loginUserId = dict["id"] as? String {
            self.loginUserId = loginUserId
        }
        if let loginUserUuid = dict["uuid"] as? String {
            self.loginUserUuid = loginUserUuid
            print(loginUserUuid)
        }
        if let loginUserCountry = dict["country"] as? String {
            self.loginUserCountry = loginUserCountry
        }
        if let loginUserCountryCode = dict["country_code"] as? String {
            self.loginUserCountryCode = loginUserCountryCode
        }
        if let loginUserEmail = dict["email"] as? String {
            self.loginUserEmail = loginUserEmail
        }
        if let loginUserProfilePic = dict["profile_pic"] as? String {
            self.loginUserProfilePic = loginUserProfilePic
        }
        if let loginUserLongitude = dict["logitude"] as? String {
            self.loginUserLongitude = loginUserLongitude
        }
        if let loginUserName = dict["name"] as? String {
            self.loginUserName = loginUserName
        }
        if let loginUserQrcode = dict["qr_code"] as? String {
            self.loginUserQrcode = loginUserQrcode
        }
        if let Password = dict["password"] as? String{
            self.loginPassword = Password
        }
        if let dateOfBirth = dict["dob"] as? String{
            self.dateOfBirth = dateOfBirth
        }
        if let earnedPoints = dict["points"] as? String{
            let myDouble = Double(earnedPoints)
            let doubleStr = String(format: "%.2f", myDouble!)
            self.earnedPoints = doubleStr
        }
        if let loginUserGender = dict["gender"] as? String{
            self.loginUserGender = loginUserGender
        }
        if let loginUserFollowers = dict["followersCount"] as? Int{
            self.loginUserFollowers = loginUserFollowers
        }

    }

}

На самом деле, проблема в том, что когда я выхожу и снова вхожу с другим пользователем, он все еще показывает некоторые значения предыдущего пользователя. Я очищаю userdefaults на функции выхода из системы. но я не знаю, как очистить этот тип общего словаря.

1 Ответ

1 голос
/ 09 мая 2019

Используйте removeObject (forKey:) , чтобы удалить значения, сохраненные из пользовательских настроек по умолчанию в методе Logout

UserDefaults.standard.removeObject(forKey: MaindataKey)
UserDefaults.standard.removeObject(forKey: HmacKey)
UserDefaults.standard.set(false, forKey: "isLogin")

Создайте метод для удаления значений из одноэлементного класса, как этот

extension GAloginUserInfo {
    func removeUserInfo() {
        self.loginUserMobileNo = nil
        self.loginUserId = nil
        self.loginUserUuid = nil
        self.loginUserCountry = nil
        self.loginUserCountryCode = nil
        self.loginUserEmail = nil
        self.loginUserlatitude = nil
        self.loginUserLongitude = nil
        self.loginUserName = nil
        self.loginUserQrcode = nil
        self.loginUserProfilePic = nil
        self.isverify = nil
        self.loginPassword = nil
        self.dateOfBirth = nil
        self.earnedPoints = nil
        self.loginUserGender = nil
        self.loginUserFollowers = 0
    }
}

и вызовите этот метод при выходе из системы

GAloginUserInfo.shared.removeUserInfo()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...