2017-11-20 6 views
0

NSUserDefaultsで処理しようとしていますが、アプリをオフラインにするとデータを表示できません。データをオフラインで保存してアプリがオンラインになったときに更新するにはどうすればいいですか?

let params: [String: String] = ["user-login-key" : loginkey , "api-key" : "ebaa3e8571444005cc0b609824e90dc8"] 

    Alamofire.request("http://34.210.142.70/isdental/api/v2.0/home/featured", method: .get, parameters: nil, encoding: URLEncoding.default, headers: params).responseJSON { (response:DataResponse<Any>) in 

     switch(response.result) { 
     case .success(_): 
      if let data = response.result.value{ 
       let json1 = data as! NSDictionary 

       UserDefaults.standard.set(NSKeyedArchiver.archivedData(withRootObject: json1), forKey: "JsonFeatured") 

       let jsond = UserDefaults.standard.object(forKey: "JsonFeatured") as? NSData 

       let json = NSKeyedUnarchiver.unarchiveObject(with: jsond! as Data) as! NSDictionary 

       self.CollectionArray = json.object(forKey: "banners") as! NSArray 
      } 
+0

アプリがバックグラウンドでないときにデータをアップロードしようとしていますか? –

+0

@SivajeeBattinaアプリケーションがインターネット接続を持ち、バックグラウンド状態でないときにuserdefaultsにデータを保存しています –

+0

アプリケーションはユーザーの電話にデータを保持できます。そのタスクのツールはさまざまです。最も人気のあるものはCoreDataフレームワークですAppleが提供する永続性フレームワーク – Baig

答えて

1
  • あなたは障害状態をチェックされていません。
  • オフラインの場合、Alamofireは失敗のケースに入ります。

以下のコードを確認してください。

 case .success(_): 
      if let data = response.result.value{ 
       let json1 = data as! NSDictionary 
       UserDefaults.standard.set(NSKeyedArchiver.archivedData(withRootObject: json1), forKey: "JsonFeatured") 

       let jsond = UserDefaults.standard.object(forKey: "JsonFeatured") as? NSData 

       let json = NSKeyedUnarchiver.unarchiveObject(with: jsond! as Data) as! NSDictionary 

       //self.CollectionArray = json.object(forKey: "banners") as! NSArray 
      } 

     case .failure(_): 
      if (UserDefaults.standard.object(forKey: "JsonFeatured") != nil){ 
       if let savedData = NSKeyedUnarchiver.unarchiveObject(with: UserDefaults.standard.object(forKey: "JsonFeatured") as! Data) 
       { 
        let json = NSKeyedUnarchiver.unarchiveObject(with: savedData as! Data) as! NSDictionary 

        self.CollectionArray = json.object(forKey: "banners") as! NSArray 

       } 
      } 
      break 

     } 
関連する問題