2017-09-18 9 views
0

私はBussiness Manager &をダウンロードマネージャを使用してWebサービスからデータを取得します。アプリケーションがデバイスに再インストールされるまで、アプリケーション全体でデータは更新されません。私もviewDidAppearメソッドを使用しますが、それも動作しません。これは、事前にあなたの経験の.Thanksシェアで私を助けてください、私に深刻な問題であるApp(Swift)を再インストールするとデータが更新されます

商務マネージャー方法

 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) 

    }) 
} 
+0

..あなたはこのコードを使用することにより、クッキーとキャッシュをクリアする必要があるべきだと思いますか? viewDidAppearMethodの –

+1

。 –

+0

問題をよりよく理解するために、そのコードを追加する必要があります。 –

答えて

0

のおかげで私はあなたがすべてのあなたのViewControllerコンポーネントを再読み込みしている

URLCache.shared.removeAllCachedResponses() 

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

最後に私は答えを見つけた、私はクリアクッキーとcacのコードを使用した彼はAppとThatsのすべての動作のために。貢献