Kobe Kobe - 2 months ago 12
iOS Question

How to convert array of enum to array of int's

I am using Core Data and one of my predicates retrieves data based on the following enum:

enum Period : Int {
Daily
Weekly
Monthly
}


My predicates is like this:

public static func byTypePredicate(periods: [Int]) -> NSPredicate {
return NSPredicate(format: "period IN %@", periods)
}


My problem is I don't want to use
Int's
when calling this predicate, I want to pass the
Period
enum, but inside the predicate is have to convert it to
Int
to make it work.

Is there a quick way to convert it ?

Answer

You can use the map() method (of the Sequence protocol) to map each enumeration to its integer raw value:

func byTypePredicate(periods: [Period]) -> NSPredicate {
    let intPeriods = periods.map { $0.rawValue } // [Int]
    return NSPredicate(format: "period IN %@", intPeriods)
}
Comments