Post

Replies

Boosts

Views

Activity

How to override switch case behaviour like we override operator == with Equatable protocol
Equatable protocol not called when enum compared in switch case. Here is my code `import Foundation public enum AMSelectionStyle{     case single     case multiple     case any } public enum AMCalenderMode{     case date     case time     case dateTime     case any      } public enum AMNumberType:String{     case natural = "N" //(also called positive integers, counting numbers, or natural numbers); They are the numbers {1, 2, 3, 4, 5, …}     case whole = "W" //This is the set of  natural numbers, plus zero, i.e., {0, 1, 2, 3, 4, 5, …}.     case integer = "Z" // This is the set of all whole numbers plus all the negatives (or opposites) of the natural numbers, i.e., {… , ⁻2, ⁻1, 0, 1, 2, …}     case rational = "Q" //This is all the fractions where the top and bottom numbers are integers; e.g., 1/2, 3/4, 7/2, ⁻4/3, 4/1 [Note: The denominator cannot be 0, but the numerator can be].     case real = "R" //(also called measuring numbers or measurement numbers). This includes all numbers that can be written as a decimal. This includes fractions written in decimal form e.g., 0.5, 0.75 2.35, ⁻0.073, 0.3333, or 2.142857. It also includes all the irrational numbers such as π, √2 etc. Every real number corresponds to a point on the number line.     case all = "" // all of the above } public enum AMInputType:Equatable {     case list(AMSelectionStyle)     case number(AMNumberType)     case calender(AMCalenderMode)     case freeText     case boolian     case picklist         public static func ==(lhs: AMInputType, rhs: AMInputType) -> Bool {         switch (lhs, rhs) {         case (let .list(a1), let .list(a2)):             if a1 == .any || a2 == .any {                 return true             }else if a1 == .single && a2 == .single {                 return true             }else if a1 == .multiple && a2 == .multiple {                 return true             }             return a1 == a2         case (let .number(a1), let .number(a2)):             if a1 == .all || a2 == .all {                 return true             }else if a1 == .natural && a2 == .natural {                 return true             }else if a1 == .whole && a2 == .whole {                 return true             }else if a1 == .integer && a2 == .integer {                 return true             }else if a1 == .rational && a2 == .rational {                 return true             }else if a1 == .real && a2 == .real {                 return true             }             return a1 == a2         case  (let .calender(a1), let .calender(a2)):             if a1 == .any || a2 == .any {                 return true             }else if a1 == .date && a2 == .date {                 return true             }else if a1 == .time && a2 == .time {                 return true             }else if a1 == .dateTime && a2 == .dateTime {                 return true             }             return a1 == a2         case (.freeText, .freeText):             return true         case (.boolian, .boolian):             return true         case (.picklist, .picklist):             return true         default:             return false         }     } } func compareEnum(inputType:AMInputType)->Bool{     switch inputType {     case .number(.all):         print("Switch case number check Successful")         return true     case .calender(.any):         print("Switch case calender check Successful")         return true     case .list(.any):         print("Switch case list check Successful")         return true     default:         print("Switch case check Failed")         return false     } } //Comparasion fails compareEnum(inputType: .number(.real)) //Compatisation succeeded when enum parameters values are same compareEnum(inputType: .number(.all)) //If condition succeeds if AMInputType.number(.all) == AMInputType.number(.real) {     print("If Condition number check Successful") }
1
1
855
Oct ’21
How to override switch case behaviour like we override operator == with Equatable protocol
Equatable protocol not called when enum compared in switch case. Here is my code `import Foundation public enum AMSelectionStyle{     case single     case multiple     case any } public enum AMCalenderMode{     case date     case time     case dateTime     case any      } public enum AMNumberType:String{     case natural = "N" //(also called positive integers, counting numbers, or natural numbers); They are the numbers {1, 2, 3, 4, 5, …}     case whole = "W" //This is the set of  natural numbers, plus zero, i.e., {0, 1, 2, 3, 4, 5, …}.     case integer = "Z" // This is the set of all whole numbers plus all the negatives (or opposites) of the natural numbers, i.e., {… , ⁻2, ⁻1, 0, 1, 2, …}     case rational = "Q" //This is all the fractions where the top and bottom numbers are integers; e.g., 1/2, 3/4, 7/2, ⁻4/3, 4/1 [Note: The denominator cannot be 0, but the numerator can be].     case real = "R" //(also called measuring numbers or measurement numbers). This includes all numbers that can be written as a decimal. This includes fractions written in decimal form e.g., 0.5, 0.75 2.35, ⁻0.073, 0.3333, or 2.142857. It also includes all the irrational numbers such as π, √2 etc. Every real number corresponds to a point on the number line.     case all = "" // all of the above } public enum AMInputType:Equatable {     case list(AMSelectionStyle)     case number(AMNumberType)     case calender(AMCalenderMode)     case freeText     case boolian     case picklist         public static func ==(lhs: AMInputType, rhs: AMInputType) -> Bool {         switch (lhs, rhs) {         case (let .list(a1), let .list(a2)):             if a1 == .any || a2 == .any {                 return true             }else if a1 == .single && a2 == .single {                 return true             }else if a1 == .multiple && a2 == .multiple {                 return true             }             return a1 == a2         case (let .number(a1), let .number(a2)):             if a1 == .all || a2 == .all {                 return true             }else if a1 == .natural && a2 == .natural {                 return true             }else if a1 == .whole && a2 == .whole {                 return true             }else if a1 == .integer && a2 == .integer {                 return true             }else if a1 == .rational && a2 == .rational {                 return true             }else if a1 == .real && a2 == .real {                 return true             }             return a1 == a2         case  (let .calender(a1), let .calender(a2)):             if a1 == .any || a2 == .any {                 return true             }else if a1 == .date && a2 == .date {                 return true             }else if a1 == .time && a2 == .time {                 return true             }else if a1 == .dateTime && a2 == .dateTime {                 return true             }             return a1 == a2         case (.freeText, .freeText):             return true         case (.boolian, .boolian):             return true         case (.picklist, .picklist):             return true         default:             return false         }     } } func compareEnum(inputType:AMInputType)->Bool{     switch inputType {     case .number(.all):         print("Switch case number check Successful")         return true     case .calender(.any):         print("Switch case calender check Successful")         return true     case .list(.any):         print("Switch case list check Successful")         return true     default:         print("Switch case check Failed")         return false     } } //Comparasion fails compareEnum(inputType: .number(.real)) //Compatisation succeeded when enum parameters values are same compareEnum(inputType: .number(.all)) //If condition succeeds if AMInputType.number(.all) == AMInputType.number(.real) {     print("If Condition number check Successful") }
Replies
1
Boosts
1
Views
855
Activity
Oct ’21
How to fetch Lab Name and Lab Result Panel from Health Kit
Hello Team, We are Testing Health Records feature into our Patient Application. We have imported sample data available in Simulator and modelling it using FHIR Model. We are trying to group test results based on Origin(Lab Name and Result Date) of Lab Reports. But we are not able to retrieve Lab Name and Lab Test Panel Mapping information.
Replies
3
Boosts
0
Views
724
Activity
Sep ’21