我试图通过向服务器发出请求来获取员工数据,在获取数据后,我将使用它来更新UI。实际上,我是从服务器获取数据的,但我不知道为什么会收到错误消息
网络连接丢失
当我试图将结果赋给一个值时,出现错误消息。这是发出请求时的代码,基本上这是alamofire。

// send request to the server to get employee data
let loginEndPoint = EndPoint.login(loginUser: username!, password: password!, registrationID: registrationID!)

NetworkingService.fetchJSONData(endPoint: loginEndPoint, completion: { (result) in
     print("a")
     switch result {
     case .failure(let error) :
         self.activityIndicator.stopAnimating()
         self.showAlert(alertTitle: "Sorry", alertMessage: error.localizedDescription, actionTitle: "Back")
     case .success(let jsonFromServer) :

         let json = jsonFromServer as! JSON
         let validity = json["valid"].intValue

         if validity == 0 {
             print("c")
             guard let messageFromServer = json["message"].string else {return}
             self.activityIndicator.stopAnimating()
             self.showAlert(alertTitle: "Sorry", alertMessage: messageFromServer, actionTitle: "Back")
         } else {
             print("b")
             guard let employeeDataFromServer = json["data"].dictionaryObject else {return}
             self.dataOfEmployee = Employee(dictionary: employeeDataFromServer)
             print(self.dataOfEmployee) <--- the problem is in here

             self.activityIndicator.stopAnimating()
         }
     }
})

在调试区,打印了“a”和“b”,这意味着在网络连接方面没有问题。实际上,当我print(employeeDataFromServer)时,来自服务器的数据是可用的。
但是,当我通过首先创建Employee对象将结果赋给属性dataOfEmployee时。当我print(self.dataOfEmployee)时。我收到错误“网络连接丢失”。
我真的不明白为什么会这样。这里出什么事了???
这是我用来创建对象的employee结构
struct Employee {

    var name : String
    var NIK : Int
    var department : String
    var level : String
    var imagePath : String?
    var company : String
    var superior : Int

    init (dictionary: [String:Any]) {
        print("x")
        name = dictionary["NamaKaryawan"] as! String
        NIK = dictionary["NIK"] as! Int
        department = dictionary["Departmen"] as! String
        level = dictionary["Level"] as! String
        superior = dictionary["Superior"] as! Int
        company = dictionary["Company"] as! String
        imagePath = dictionary["Url"] as? String
        print("z")
    }
}

我认为在制作employee对象时没有问题,因为“x”和“z”是打印出来的。

最佳答案

很奇怪,我觉得他们没有关系。尝试在打印dataOfEmployee的地方放置一个断点,然后查看“变量”窗口。你能用鼠标右键点击它并打印描述吗?

10-05 21:13