내 json 응답을 NSUserdefaults 에 저장했으며 데이터가 오프라인 상태 인 경우에도 저장된 응답이 결과는 괜찮지 만 오프라인 상태에서는 UI에 대한 사용자 상호 작용이 비활성화되어 있음을 보여야합니다. 희망은 누구든지 도울 수 있습니다
네트워크 도달 가능성이 연결되어 있거나 루프에 들어 가지 않고 응답을 표시하지만 UI 상호 작용이 발생했을 때 중단 점을 제공하여 시도했습니다.
func homePageAPI()
{
let kUserDefault = UserDefaults.standard
if Reachability.isConnectedToNetwork() == true{
APIModel().homeApi(withUrl: "", withParameters:"", withComplitionBlock: {(_ responseDict: Dictionary!, _ error:String) -> Void in// here im not displaying my url as it is illegal
DispatchQueue.main.async (execute:{ () -> Void in
if (responseDict != nil)
{
kUserDefault.set(responseDict, forKey: "responseDict")
self.productresponseArray = (responseDict["server_productresponse"] as AnyObject) as! NSArray
self.productDetailsArray = ((responseDict["server_productresponse"] as AnyObject) .value(forKey: "product_dtls") as AnyObject) as! NSArray
self.vehicleStatusStringArray = ((responseDict["server_productresponse"] as AnyObject) .value(forKey: "veh_status") as AnyObject) as! NSArray
}
})
})
}
else{
let offlineResponseDict:NSDictionary = kUserDefault.value(forKey: "responseDict") as! NSDictionary
print(offlineResponseDict as Any)
self.productresponseArray = (offlineResponseDict["server_productresponse"] as AnyObject) as! NSArray
self.productDetailsArray = ((offlineResponseDict["server_productresponse"] as AnyObject) .value(forKey: "product_dtls") as AnyObject) as! NSArray
self.vehicleStatusStringArray = ((offlineResponseDict["server_productresponse"] as AnyObject) .value(forKey: "veh_status") as AnyObject) as! NSArray
}
self.homeTableView.reloadData()
}
이 시도:
func homePageAPI() {
let kUserDefault = UserDefaults.standard
DispatchQueue.global(qos: .background).async {
// do something that needs to be run on background thread
if Reachability.isConnectedToNetwork() {
APIModel().homeApi(withUrl: "", withParameters:"", withComplitionBlock: {
(_ responseDict: Dictionary!, _ error:String) -> Void in// here im not displaying my url as it is illegal
if (responseDict != nil)
{
kUserDefault.set(responseDict, forKey: "responseDict")
self.productresponseArray = (responseDict["server_productresponse"] as AnyObject) as! NSArray
self.productDetailsArray = ((responseDict["server_productresponse"] as AnyObject) .value(forKey: "product_dtls") as AnyObject) as! NSArray
self.vehicleStatusStringArray = ((responseDict["server_productresponse"] as AnyObject) .value(forKey: "veh_status") as AnyObject) as! NSArray
}
})
} else{
let offlineResponseDict:NSDictionary = kUserDefault.value(forKey: "responseDict") as! NSDictionary
print(offlineResponseDict as Any)
self.productresponseArray = (offlineResponseDict["server_productresponse"] as AnyObject) as! NSArray
self.productDetailsArray = ((offlineResponseDict["server_productresponse"] as AnyObject) .value(forKey: "product_dtls") as AnyObject) as! NSArray
self.vehicleStatusStringArray = ((offlineResponseDict["server_productresponse"] as AnyObject) .value(forKey: "veh_status") as AnyObject) as! NSArray
}
// update UI on main thread
DispatchQueue.main.async {
self.homeTableView.reloadData()
}
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다