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