数据在重新安装该应用程序时更新 (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)
}
}
我使用业务管理器和下载管理器从 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)
}
}