问题
I am defining some of ranges by following
let range0_15 = 0 ..< 15
let range15_30 = 15 ..< 30
let range30_45 = 30 ..< 45
let range45_60 = 45 ..< 60
I really want to use Enum
for this by trying
enum range : Range<Int> {
range0_15 = 0 ..< 15
range15_30 = 15 ..< 30
range30_45 = 30 ..< 45
range45_60 = 45 ..< 60
}
And I am getting an error
Type 'CoreDataStach.range' does not comform to protocol RawRepresentable
Is it possible to define an enum like above and if it is yes, what I am missing right here.
回答1:
You might be better off trying something like this using a struct.
struct Ranges{
static let range0_15 = 0 ..< 15
static let range15_30 = 15 ..< 30
static let range30_45 = 30 ..< 45
static let range45_60 = 45 ..< 60
}
if Ranges.range0_15.contains(6){ //Test to true
print("inside range")//Prints "inside range"
}
回答2:
Try like this:
enum rangeEnum : Int {
case range0_15
case range15_30
case range30_45
case range45_60
var range:Range<Int> {
switch self {
case range0_15 : return 0 ..< 15
case range15_30 : return 15 ..< 30
case range30_45 : return 30 ..< 45
case range45_60 : return 45 ..< 60
}
}
}
Then you can use your rangeEnumVariable.range
Or
rangeEnum.range0_15.range
来源:https://stackoverflow.com/questions/37932688/how-to-simplify-and-make-it-better-using-enum-swift-learning-enum