Reputation: 39
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
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
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