2017-02-17 9 views
-6

私はuitable viewを更新するため、1日に1回apiコールを行いたいと思います。swift 3.0を使用して1日に1回APIコールを行う方法

私は現在の日または前日、または新しい日をどのように認識できるかを知る必要があります。

したがって、現在の日であれば、何も実行せずに、単にUITableViewをリロードしてください。

新しい日であれば、API呼び出しを取得してUItabelviewを更新します。

以下は、私のAlamofire関数です.jsonデータを解析しています。

Alamofire.request("myurl") .responseJSON { response in 

         if let arr = response.result.value as? [NSDictionary] 
         { 
          let ah22 = (arr[0]["ah_22"] as? String) 
          if let ah22_val = ah22{ self.arrGValues22.append(ah22_val) } else{ print("No Val")} 

          let ah24 = (arr[0]["ah_24"] as? String) 
          if let ah24_val = ah24{ self.arrGValues24.append(ah24_val) } else{ print("No Val")} 

          let ban22 = (arr[0]["ban_22"] as? String) 
          if let ban22_val = ban22{ self.arrGValues22.append(ban22_val) } else{ print("No Val")} 

          let ban24 = (arr[0]["ban_24"] as? String) 
          if let ban24_val = ban24{ self.arrGValues24.append(ban24_val) } else{ print("No Val")} 



          self.TableView.delegate = self 
          self.TableView.dataSource = self 
          print(self.arrGValues22) 
          print(self.arrGValues24) 
          print(self.arrGKeys) 

         self.TableView.reloadData() 
         } 
         else 
         { 
          print("No Vals") 
         } 

      } 

私はスイフトを初めて利用しています。

+1

最後の通話日を確認するための条件を作成し、応答時に変更する必要があります。 –

+0

最終通話日の設定方法 – aadityaa

+0

uはuserdefaultに呼び出し日を保存して確認することができます 初めての場合はnilを返すので、そのための条件も用意しています –

答えて

3

NSUserDefaultsに現在の日付をAPI呼び出しに割り当てるのは、新しい日付に1回だけです。

 let date = Date() 
     let formatter = DateFormatter() 
     formatter.dateStyle = DateFormatter.Style.short 
     let dateString = formatter.string(from: date) 
     let defaults = UserDefaults.standard 
     let changedDate = defaults.object(forKey: "luckyDate") as? String 

//Here checking whether date is changed or not 
     if dateString != changedDate 
     { 
         self.TableView.delegate = self 
         self.TableView.dataSource = self 
         print(self.arrGValues22) 
         print(self.arrGValues24) 
         print(self.arrGKeys) 

         self.TableView.reloadData() 
     } 
     else 
     { 
       Alamofire.request("myurl") .responseJSON { response in 

        if let arr = response.result.value as? [NSDictionary] 
        { 
         let ah22 = (arr[0]["ah_22"] as? String) 
         if let ah22_val = ah22{ self.arrGValues22.append(ah22_val) } else{ print("No Val")} 

         let ah24 = (arr[0]["ah_24"] as? String) 
         if let ah24_val = ah24{ self.arrGValues24.append(ah24_val) } else{ print("No Val")} 

         let ban22 = (arr[0]["ban_22"] as? String) 
         if let ban22_val = ban22{ self.arrGValues22.append(ban22_val) } else{ print("No Val")} 

         let ban24 = (arr[0]["ban_24"] as? String) 
         if let ban24_val = ban24{ self.arrGValues24.append(ban24_val) } else{ print("No Val")} 



         self.TableView.delegate = self 
         self.TableView.dataSource = self 
         print(self.arrGValues22) 
         print(self.arrGValues24) 
         print(self.arrGKeys) 

        self.TableView.reloadData() 
        } 
        else 
        { 
         print("No Vals") 
        } 
     } 

     } 
     defaults.set(dateString, forKey: "luckyDate") 

希望します。

+0

これは完璧に動作します。 – aadityaa

+0

Ashish、私は客観的なCの例を教えてくれますか? – aadityaa

関連する問題