Saad Riaz
Saad Riaz

Reputation: 39

Get all keys with values for a specific date in an array of dictionaries SWIFT

I have an array of dictionaries:

var eventDetailsArray = [[String: String]]()
var events: [String: String] =  ["name":"block A”,  "date":"Friday, 23 Nov 2018"]
var events1: [String: String] = ["name":"block AB”, "date":"Friday, 23 Nov 2018"]
var events2: [String: String] = ["name":"block B",  "date":"Tuesday, 13 Nov 2018"]
var events3: [String: String] = ["name":"block C",  "date":"Wednesday, 28 Nov 2018"]

eventDetailsArray.append(events)
eventDetailsArray.append(events1)
eventDetailsArray.append(events2)
eventDetailsArray.append(events3)

var eventNamesArray = [String]() 

I want an output array with event names for date selected only. E.g; if ”Friday, 23 Nov 2018" is selected; I should get "block A” and "block AB” in the output array in SWIFT

Upvotes: 0

Views: 236

Answers (2)

ielyamani
ielyamani

Reputation: 18591

You can do it like so:

let str = "Friday, 23 Nov 2018"
eventNamesArray = eventDetailsArray.compactMap { $0["date"] == str ? $0["name"] : nil }

And the result is:

print(eventNamesArray)  //["block A", "block AB"]

Upvotes: 3

Andreas Oetjen
Andreas Oetjen

Reputation: 10209

Just use the filter method:

var eventNamesArray = eventDetailsArray.filter { $0["date"] == "Friday, 23 Nov 2018" }

Maybe you should also consider using Date instead of Strings to represent the date. Especially, if you are interested in supporting different languages / locales.

Upvotes: 0

Related Questions