@@ -22,26 +22,55 @@ var valueTypeName = typeName + "Value";
2222foreach (var member in entity.Members.OrderBy(x => x.Value))
2323{
2424#>
25- +(<#=typeName#>*) <#=member.Name.ToUpperFirst ()#> {
26- static <#=typeName#> *_<#=member.Name.ToLowerFirst ()#>
25+ + (<#=typeName#>*) <#=member.Name.ToLowerFirstChar ()#> {
26+ static <#=typeName#> *_<#=member.Name.ToLowerFirstChar ()#>
2727 static dispatch_once_t onceToken;
28- dispatch_once(&onceToken, ^{
29- _<#=member.Name.ToLowerFirst ()#> = [[<#=typeName#> alloc] init];
30- _<#=member.Name.ToLowerFirst ()#>._enumValue = <#=GetObjCEnumMember(entity, member)#>;
31- });
32- return _<#=member.Name.ToLowerFirst ()#>;
28+ dispatch_once(&onceToken, ^{
29+ _<#=member.Name.ToLowerFirstChar ()#> = [[<#=typeName#> alloc] init];
30+ _<#=member.Name.ToLowerFirstChar ()#>._enumValue = <#=GetObjCEnumMember(entity, member)#>;
31+ });
32+ return _<#=member.Name.ToLowerFirstChar ()#>;
3333}
3434<#
3535}
3636#>
37+
38+ + (<#=typeName#>*) UnknownEnumValue {
39+ static <#=typeName#> *_unknownValue
40+ static dispatch_once_t onceToken;
41+ dispatch_once(&onceToken, ^{
42+ _unknownValue = [[<#=typeName#> alloc] init];
43+ _unknownValue._enumValue = <#=typeName#>EndOfEnum;
44+ });
45+ return _unknownValue;
46+ }
47+
3748<#
3849///////////////////////////////////////////////////////////////
3950// Generate conversion from enum to boxed type and vice versa
4051// e.g. [DayOfWeek dayOfWeekWithEnumValue:DayOfWeekMonday]
4152///////////////////////////////////////////////////////////////
4253#>
43- +(<#=GetObjCTypeIdentifier(entity)#>*) <#=GetObjCTypeIdentifier(entity).ToLowerFirst()#>WithEnumValue:(<#=valueType#>)val {
44-
54+
55+ + (<#=typeName#>*) <#=entity.Name.ToLowerFirstChar()#>WithEnumValue:(<#=valueTypeName#>)val {
56+
57+ switch(val)
58+ {
59+ <#
60+ foreach(var member in entity.Members)
61+ {
62+ #>
63+ case <#=GetObjCEnumMember(entity,member)#>:
64+ return [<#=typeName#> <#=member.Name#>];
65+ <#
66+ }
67+ #>
68+ case <#=typeName#>EndOfEnum:
69+ default:
70+ return [<#=typeName#> UnknownEnumValue];
71+ }
72+
73+ return nil;
4574}
4675
4776- (<#=valueTypeName#>) enumValue {
@@ -52,7 +81,7 @@ foreach (var member in entity.Members.OrderBy(x => x.Value))
5281
5382@implementation NSString (<#=typeName#>)
5483
55- + (instancetype) stringWith<#=typeName#>:(<#=typeName#>)val {
84+ + (instancetype) stringWith<#=typeName#>:(<#=typeName#>* )val {
5685
5786 switch(val.enumValue)
5887 {
@@ -80,12 +109,12 @@ foreach (var member in entity.Members.OrderBy(x => x.Value))
80109 {
81110 #>if([self isEqualToString:@"<#=member.Name#>"])
82111 {
83- return [<#=typeName#> <#=GetObjCEnumMember(entity, member) #>];
112+ return [<#=typeName#> <#=member.Name #>];
84113 }
85114 else <#
86115 }
87116 #>{
88- return <#=GetObjCTypeIdentifier(entity)#>EndOfEnum ;
117+ return [ <#=typeName#> UnknownEnumValue] ;
89118 }
90119}
91120
0 commit comments