0

I'm getting the json response from API call like this,

enter image description here 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

enter image description here

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
}
Muthu Sabarinathan
  • 1,198
  • 2
  • 21
  • 49
  • 1
    See this: https://stackoverflow.com/questions/31220002/how-to-group-by-the-elements-of-an-array-in-swift – Sweeper Feb 27 '18 at 15:00
  • Possible duplicate of [How to group by the elements of an array in Swift](https://stackoverflow.com/questions/31220002/how-to-group-by-the-elements-of-an-array-in-swift) – DonMag Feb 27 '18 at 15:11
  • @Sweeper - Thanks for your quick response. I will check this and let you know. – Muthu Sabarinathan Feb 27 '18 at 15:13

0 Answers0