I'm getting the json response from API call like this,
and I convert that json into object using SwiftyJson.
let activityStreamData = ActivityStreamData(fromJson: value)
completionHandler(true, activityStreamData, nil)
Here ActivityStreamData is a class.
class ActivityStreamData {
var currentList : [ActivityStreamList]!
init(fromJson json: JSON!){
if json == nil{
return
}
currentList = [ActivityStreamList]()
let currentListArray = json["CurrentList"].arrayValue
for currentListJson in currentListArray{
let value = ActivityStreamList(fromJson: currentListJson)
currentList.append(value)
}
}
}
class ActivityStreamList {
var activityData : String!
var activityDate : String!
var activityType : String!
init(fromJson json: JSON!){
if json == nil{
return
}
activityData = json["ActivityData"].stringValue
activityDate = json["ActivityDate"].stringValue
activityType = json["ActivityType"].stringValue
}
}
Now I would like to group it by ActivityDate like this
I did it in traditional way but I need it by coding standard.
var activityStreamDict = [String: [ActivityStreamList]]()
var activityArr: [String] = []
for activity in self.activityStreamLists {
let paidDate = Date(fromString: activity.activityDate!, format: .custom(DateFormat.Formate7.rawValue))
let dateStr = self.setDateForStartAndEnd(selectedDate: paidDate!)
if !activityArr.contains(dateStr) {
activityArr.append(dateStr)
}
}
var actArr: [ActivityStreamList] = []
for act in activityArr {
actArr = self.activityStreamLists.filter({
self.setDateForStartAndEnd(selectedDate: Date(fromString: $0.activityDate!, format: .custom(DateFormat.Formate7.rawValue))!) == act
})
self.activityStreamDict[act] = actArr
}