代码之家  ›  专栏  ›  技术社区  ›  Audrey Rozario

我试图在swift 4的配置文件中获取特定的登录用户数据

  •  0
  • Audrey Rozario  · 技术社区  · 6 年前

    我试图在个人资料中获取一个特定登录ID的数据,但我无法获取它。我查看了许多链接,但它对我不起作用。下面是我用来获取数据的函数

    作用

    func getCompanyFunc() {
            let empURL = URL(string: "http://172.16.1.22/Get-Company-API/get-companies/")
            URLSession.shared.dataTask(with: empURL!) { (data, response, error) in
                do {
                    if error == nil {
                        self.getCompanyArray = try JSONDecoder().decode([CompanyDataProfile].self, from: data!)
    
                        for mainArr in self.getCompanyArray {
                            DispatchQueue.main.async {
                                let companyDefaultValue = UserDefaults.standard
                                if let userID = companyDefaultValue.string(forKey: "user_type_id") {
                                    self.getComData = self.getCompanyArray.filter { $0.company_id == userID }
                                    print("Company ID Profile=\(userID)")
                                    self.companyName_lbl.text = mainArr.company_name
                                }
                            }
                        }
                        print("****Employee Data****\(self.getCompanyArray)")
                    }
                }
                catch {
                    print("Error in get JSON Data Employee\(error)")
                }
                }.resume()
        }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Kuldeep Jayesh Lathiya    6 年前

    试试这个。

    UserListObject

    import UIKit
    
    class UserListObject: NSObject {
    
        var strCompanyID: String    = ""
        var strFirstName: String    = ""
        var strLastName: String     = ""
        var strEmail: String        = ""
    
        class func parseFromDictionary(dict: NSDictionary) -> UserListObject {
            let objUser = UserListObject()
    
            if let company_id = dict["company_id"] as? String {
                objUser.strCompanyID = company_id
            }
            if let fname = dict["fname"] as? String {
                objUser.strFirstName = fname
            }
            if let lname = dict["lname"] as? String {
                objUser.strLastName = lname
            }
            if let email_id = dict["email_id"] as? String {
                objUser.strEmail = email_id
            }
    
            return objUser
        }
    }
    

    你的ViewController

    在全球范围内定义: var arrUsers = [UserListObject]()

    所以,一旦您从API中获得数据,就可以像下面这样存储它。

    APIsManager.postCall(url!, params: _parameters, success: { (response) in
        //CommonHelper.hideProgress()
        let JSONData = response as! NSDictionary
        if(JSONData.object(forKey: "Success") as! Bool == true) {
            self.arrUsers.removeAll()
            let arrData = JSONData.value(forKey: "Data") as! NSArray
    
            for i in 0..<arrData.count {
                let dict = arrData.object(at: i) as! NSDictionary
                let objUser = UserListObject.parseFromDictionary(dict: dict)
                self.arrUsers.append(objUser)
            }
        }
        else {
            // Error
        }
    }) { (response) in
        //Error
    }
    

    一旦你在arrUsers中获得了所有用户,你就需要进行如下过滤。

    let objLoggedInUser = self.arrUsers.filter{ $0. strCompanyID == YOUR_USERDEFAULT_ID}.first // THAT WILL RETURN YOU WHOLE OBJECT WITH ALL DETAILS
    

    现在你可以得到这样的值。

    self.lblFirstName.text = objLoggedInUser. strFirstName
    self.lblLastName.text  = objLoggedInUser. strLastName