2017-08-02 3 views
1

viewDidLoad()にWebサービスコールを追加しましたが、他のすべての関数が呼び出された後は常に実行を再開します。以下は私のコードです。.resumeは他のデリゲートメソッドを呼び出した後に実行されます

override func viewDidLoad() {   
    super.viewDidLoad() 
    self.addSlideMenuButton()   
    getData()   
    calendarManager = JTCalendarManager.init() 
    calendarManager.delegate = self 
    createMinAndMaxDate()   
    calendarManager.menuView = calendarMenuView 
    calendarManager.contentView = calendarContentView 
} 

func getData(){   
    var request = URLRequest(url: URL(string: "http:xxx")!) 
    request.httpMethod = "GET" 
    let task = URLSession.shared.dataTask(with: request) { data, 
    response, error in 
     guard let data = data, error == nil else { 
      print("error=\(String(describing: error))") 
      return 
     }    
     else {     
      do{      
       //empty eventDetail dictionary 
       self.Detail = [String: String]() as NSDictionary 

       let json = try JSONSerialization.jsonObject(with: 
       data, options:.allowFragments) as! [String:AnyObject] 
       if let dictionary = json as? [String: Any] { 
        if let nestedDictionary = 
        dictionary["xxx_webservices"] as? [String: Any] 
        { 
         // access nested dictionary values by key 
         let dateArray = nestedDictionary["3"] as! 
         [String:Any] 
         for details in (dateArray["xxx"] as! 
         [[String:Any]]){ 
          // access all key/value pairs in 
         dictionary 
          print(details["xxx"]!) 

           DispatchQueue.main.async (execute: { 
           () -> Void in 
            //event details contains details 
            of an event 
            self.eventDetail = 
            nestedDictionary["3"] as! 
            NSDictionary 
           }) 
          } 
         } 
        } 
       }      
      } 
      catch { 
       print("Error with Json: \(error)") 
      }     
     }    
    } 
    task.resume() 

task.resume()は、常にカレンダーメソッドの代理人を呼び出した後に実行されます。他の代理人を呼び出す前にタスクを再開して、データをカレンダービューに表示できるようにするにはどうすればよいですか? ありがとうございました

答えて

0

このコードをWebサービスに追加すると、そのトリックが実行されました。

DispatchQueue.main.async { 
    self.calendarManager.reload() 
} 

これは、Webサービスデータを持つカレンダー代理人を呼び出します。

関連する問題