it was my previous question to simply display static data on FSCalendar using 2 arrays of present and absent days.
How to change background color of events array in FSCalendar swift 3?
now I want to fetch the present and absent dates from the following json response in the format of 2array named : present and absent want to display on FSCalendar according to my previous question.
How to parse the same?. Please guide me. Thanks in advance.
{
"Present": [
{
"Student_ID": 2,
"LeaveLetterApplied": null,
"Message": null,
"Date": "2017-06-04T00:00:00",
"Notify": null,
"Status": "Present"
},
{
"Student_ID": 2,
"LeaveLetterApplied": null,
"Message": null,
"Date": "2017-06-05T00:00:00",
"Notify": null,
"Status": "Present"
}],
"Absent": [
{
"Student_ID": 2,
"LeaveLetterApplied": "",
"Message": "",
"Date": "2017-06-01T00:00:00",
"Notify": null,
"Status": "Absent"
},
{
"Student_ID": 2,
"LeaveLetterApplied": "",
"Message": "",
"Date": "2017-06-02T00:00:00",
"Notify": null,
"Status": "Absent"
},
{
"Student_ID": 2,
"LeaveLetterApplied": "",
"Message": "",
"Date": "2017-06-03T00:00:00",
"Notify": null,
"Status": "Absent"
},
{
"Student_ID": 2,
"LeaveLetterApplied": "Applied",
"Message": "Sick Leave",
"Date": "2017-06-06T00:00:00",
"Notify": null,
"Status": "Absent"
}
],
"No_Of_Working_Days": 6,
"No_Of_Present_Days": 2,
"Percentage": 0
}
Below is the code m using to parse :
func getdateFromJSON()
{
let url = NSURL(string: "http://ezschoolportalapi.azurewebsites.net/api/Student/AttendanceDetails?schoolid=1&studentid=1&month=1&year=2017")
let request = NSMutableURLRequest(url: url! as URL)
let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error)
in
guard error == nil && data != nil else
{
print("Error:",error)
return
}
let httpstatus = response as? HTTPURLResponse
if httpstatus?.statusCode == 200
{
if data?.count != 0
{
let responseString = try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! NSDictionary
let presentdetails = responseString["Present"] as? [[String:AnyObject]]
let absentdetails = responseString["Absent"] as? [[String:AnyObject]]
print(absentdetails)
print(presentdetails)
// dont know what to do next :(
}
else
{
print("No data got from URL")
}
}
else{
print("error httpstatus code is :",httpstatus?.statusCode)
}
}
task.resume()
}
Error Log :
2017-06-17 10:23:50.671 ezSchool[1848:24475] -[UICachedDeviceWhiteColor unsignedLongLongValue]: unrecognized selector sent to instance 0x608000059ec0 2017-06-17 10:23:50.672 ezSchool[1848:24475] Failed to set (placeholderType) user defined inspected property on (FSCalendar): -[UICachedDeviceWhiteColor unsignedLongLongValue]: unrecognized selector sent to instance 0x608000059ec0 2017-06-17 10:23:50.672 ezSchool[1848:24475] -[UICachedDeviceWhiteColor unsignedLongLongValue]: unrecognized selector sent to instance 0x608000059ec0 2017-06-17 10:23:50.672 ezSchool[1848:24475] Failed to set (firstWeekday) user defined inspected property on (FSCalendar): -[UICachedDeviceWhiteColor unsignedLongLongValue]: unrecognized selector sent to instance 0x608000059ec0 2017-06-17 10:23:50.672 ezSchool[1848:24475] -[UICachedDeviceWhiteColor doubleValue]: unrecognized selector sent to instance 0x608000059ec0 2017-06-17 10:23:50.673 ezSchool[1848:24475] Failed to set (headerHeight) user defined inspected property on (FSCalendar): -[UICachedDeviceWhiteColor doubleValue]: unrecognized selector sent to instance 0x608000059ec0 2017-06-17 10:23:50.673 ezSchool[1848:24475] -[UICachedDeviceWhiteColor doubleValue]: unrecognized selector sent to instance 0x608000059ec0 2017-06-17 10:23:50.673 ezSchool[1848:24475] Failed to set (headerTitleTextSize) user defined inspected property on (FSCalendar): -[UICachedDeviceWhiteColor doubleValue]: unrecognized selector sent to instance 0x608000059ec0 Error: Optional(Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo={NSUnderlyingError=0x60000005cbc0 {Error Domain=kCFErrorDomainCFNetwork Code=-1002 "(null)"}, NSErrorFailingURLStringKey=ezschoolportalapi.azurewebsites.net/api/Student/AttendanceDetails?schoolid=1&studentid=2&month=6&year=2017, NSErrorFailingURLKey=ezschoolportalapi.azurewebsites.net/api/Student/AttendanceDetails?schoolid=1&studentid=2&month=6&year=2017, NSLocalizedDescription=unsupported URL})
Don't use
NSDictionary
in Swift, you just need to useDateFormatter
to get your formatted date. Also correctJSON
dictionary in Swift 3 is[String:Any]
.First of all declare two instance property in your class of type
[String]
namedpresentDateArray
andabsentDateArray
.Now initialize these two array in your response completion block this way.
Now simply use this two array in your delegate of method of