数据在重新安装该应用程序时更新 (Swift)

Data is Update on reinstall that App (Swift)

我使用业务管理器和下载管理器从 Web 服务获取数据。在应用程序重新安装到设备上之前,整个应用程序的数据不会更新。我也使用 viewDidAppear 方法,但它也不起作用。这对我来说是个严重的问题,请通过分享您的经验来帮助我。提前致谢

业务经理方法

     class func addNewAddressToProfile(_ values:String , completionHandler:@escaping (_ result:NSDictionary)->())
     {
        DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async {

        let result = DownloadManager.downloadDataFromServer(NSString(format:"%@", values) as String, urlString: "https://abc.php") as NSDictionary

        DispatchQueue.main.async {
            completionHandler(result)
        }
       }
     }

    class func getProfileInformation(_ userID:String , completionHandler:@escaping (_ result:NSDictionary)->())
    {
        DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async {

        let url = NSString(format: "https://www.zabrabox.com/api.php?rquest=get_customer_address&customer_id=%@",userID)
        let result = DownloadManager.downloadDataFromServerGetMethod(url as String) as NSDictionary
        DispatchQueue.main.async {
            completionHandler(result)
        }
       }
      }

下载管理器方法

     class func downloadDataFromServer(_ parameter:String , urlString: String) ->NSDictionary
     {

    let urlRequest = NSMutableURLRequest()
    urlRequest.url = URL(string: urlString)
    urlRequest.setValue("application/json; charset=utf-8", forHTTPHeaderField:"Content-Disposition")
    urlRequest.httpMethod = "POST"

    let data = (parameter as NSString).data(using: String.Encoding.utf8.rawValue)
    urlRequest.httpBody = data

    var Error:NSError? = nil

    var returnData: Data?
    do {
        returnData = try NSURLConnection.sendSynchronousRequest(urlRequest as URLRequest, returning: nil)


    } catch let error as NSError {
        Error = error
        returnData = nil
   }

    if(Error == nil)
    {
        return self.validateResponds(returnData!)
    }
    let errorResult:NSDictionary = [
        "status" : "401",
        "message" : "Error message"
    ]

    return errorResult
}

她是我的 viewDidAppear 方法

    override func viewDidAppear(_ animated: Bool) {
    let data = UserDefaults.standard.object(forKey: kUserDetails) as! Data
    let userDic = NSKeyedUnarchiver.unarchiveObject(with: data) as! NSDictionary
    userIDStr = userDic.value(forKey: "customer_id") as! String

    print(userIDStr)

    BusinessManager.getProfileInformation(userIDStr, completionHandler: { (result) -> () in
        print(result)

        //        print(self.addressAry)
                    self.addressAry = result.value(forKey: "customer_address") as!
        NSMutableArray
                    self.tableView.reloadData()

                    let tempData = NSKeyedArchiver.archivedData(withRootObject: self.addressAry)
                    UserDefaults.standard.set(tempData, forKey: kAddToWishlist)

    })
}

最后我找到了答案,我使用代码清除了整个应用程序的 cookie 和缓存,这就是工作原理。感谢贡献

我认为您应该使用此代码清除 cookie 和缓存。

 URLCache.shared.removeAllCachedResponses()

    if let cookies = HTTPCookieStorage.shared.cookies {
        for cookie in cookies {
            HTTPCookieStorage.shared.deleteCookie(cookie)
        }
    }