@@ -1062,22 +1062,28 @@ class Combinator extends CombinatorBase {
1062
1062
} ;
1063
1063
1064
1064
emitter . emitln ( `var l${ depth } : [${ this . emitType ( type . itemType ) } ] = []` , this . level ) ;
1065
- emitter . emitln ( `for v${ depth } in ${ name } as! [Any] {` , this . level ) ;
1065
+ emitter . emitln ( `for v${ depth } in ${ name } as! [Any?] {` , this . level ) ;
1066
+ this . levelUp ( ) ;
1067
+ emitter . emitln ( `if v${ depth } != nil {` , this . level ) ;
1066
1068
this . levelUp ( ) ;
1067
1069
this . emitComplexFromMap ( emitter , propInfo , `l${ depth } ` , depth + 1 ) ;
1068
1070
this . levelDown ( ) ;
1069
1071
emitter . emitln ( '}' , this . level ) ;
1072
+ this . levelDown ( ) ;
1073
+ emitter . emitln ( '}' , this . level ) ;
1070
1074
if ( is . array ( parentType ) ) {
1071
1075
emitter . emitln ( `${ carrier } .append(l${ depth } )` , this . level ) ;
1072
1076
} else if ( is . map ( parentType ) ) {
1073
1077
const num = depth - 1 > 0 ? depth - 1 : '' ;
1074
1078
emitter . emitln ( `${ carrier } [k${ num } ] = l${ depth } ` , this . level ) ;
1075
1079
}
1076
1080
} else {
1077
- emitter . emitln ( `if dict.keys.contains( "${ fieldName } ") {` , this . level ) ;
1081
+ emitter . emitln ( `if let value = dict[ "${ fieldName } "] as? [Any?] {` , this . level ) ;
1078
1082
this . levelUp ( ) ;
1079
1083
emitter . emitln ( `var tmp : [${ this . emitType ( type . itemType ) } ] = []` , this . level ) ;
1080
- emitter . emitln ( `for v in dict["${ fieldName } "] as! [Any] {` , this . level ) ;
1084
+ emitter . emitln ( 'for v in value {' , this . level ) ;
1085
+ this . levelUp ( ) ;
1086
+ emitter . emitln ( 'if v != nil {' , this . level ) ;
1081
1087
this . levelUp ( ) ;
1082
1088
if ( is . array ( type . itemType ) || is . map ( type . itemType ) ) {
1083
1089
const propInfo = {
@@ -1092,7 +1098,7 @@ class Combinator extends CombinatorBase {
1092
1098
emitter . emitln ( `var model = ${ this . emitType ( type . itemType ) } ()` , this . level ) ;
1093
1099
emitter . emitln ( 'if v != nil {' , this . level ) ;
1094
1100
this . levelUp ( ) ;
1095
- emitter . emitln ( 'model.fromMap(v as! [String: Any])' , this . level ) ;
1101
+ emitter . emitln ( 'model.fromMap(v as? [String: Any? ])' , this . level ) ;
1096
1102
this . levelDown ( ) ;
1097
1103
emitter . emitln ( '}' , this . level ) ;
1098
1104
emitter . emitln ( 'tmp.append(model)' , this . level ) ;
@@ -1103,6 +1109,8 @@ class Combinator extends CombinatorBase {
1103
1109
}
1104
1110
this . levelDown ( ) ;
1105
1111
emitter . emitln ( '}' , this . level ) ;
1112
+ this . levelDown ( ) ;
1113
+ emitter . emitln ( '}' , this . level ) ;
1106
1114
emitter . emitln ( `self.${ _name ( name ) } = tmp` , this . level ) ;
1107
1115
this . levelDown ( ) ;
1108
1116
emitter . emitln ( '}' , this . level ) ;
@@ -1129,10 +1137,10 @@ class Combinator extends CombinatorBase {
1129
1137
emitter . emitln ( `${ carrier } [k${ num } ] = d${ depth } ` , this . level ) ;
1130
1138
}
1131
1139
} else {
1132
- emitter . emitln ( `if dict.keys.contains( "${ fieldName } ") {` , this . level ) ;
1140
+ emitter . emitln ( `if let value = dict[ "${ fieldName } "] as? [String: Any?] {` , this . level ) ;
1133
1141
this . levelUp ( ) ;
1134
1142
emitter . emitln ( `var tmp : [String: ${ this . emitType ( type . valType ) } ] = [:]` , this . level ) ;
1135
- emitter . emitln ( ` for (k, v) in dict[" ${ fieldName } "] as! [String: Any] {` , this . level ) ;
1143
+ emitter . emitln ( ' for (k, v) in value {' , this . level ) ;
1136
1144
this . levelUp ( ) ;
1137
1145
if ( is . array ( type . valType ) || is . map ( type . valType ) ) {
1138
1146
const propInfo = {
@@ -1147,7 +1155,7 @@ class Combinator extends CombinatorBase {
1147
1155
emitter . emitln ( 'if v != nil {' , this . level ) ;
1148
1156
this . levelUp ( ) ;
1149
1157
emitter . emitln ( `var model = ${ this . emitType ( type . valType ) } ()` , this . level ) ;
1150
- emitter . emitln ( 'model.fromMap(v as! [String: Any])' , this . level ) ;
1158
+ emitter . emitln ( 'model.fromMap(v as? [String: Any? ])' , this . level ) ;
1151
1159
emitter . emitln ( 'tmp[k] = model' , this . level ) ;
1152
1160
this . levelDown ( ) ;
1153
1161
emitter . emitln ( '}' , this . level ) ;
@@ -1168,15 +1176,15 @@ class Combinator extends CombinatorBase {
1168
1176
emitter . emitln ( `var model = ${ this . emitType ( type ) } ()` , this . level ) ;
1169
1177
emitter . emitln ( `if ${ name } != nil {` , this . level ) ;
1170
1178
this . levelUp ( ) ;
1171
- emitter . emitln ( `model.fromMap(${ name } as! [String: Any])` , this . level ) ;
1179
+ emitter . emitln ( `model.fromMap(${ name } as? [String: Any? ])` , this . level ) ;
1172
1180
this . levelDown ( ) ;
1173
1181
emitter . emitln ( '}' , this . level ) ;
1174
1182
emitter . emitln ( `l${ num } .append(model)` , this . level ) ;
1175
1183
} else if ( is . map ( parentType ) ) {
1176
1184
emitter . emitln ( `if ${ name } != nil {` , this . level ) ;
1177
1185
this . levelUp ( ) ;
1178
1186
emitter . emitln ( `var model = ${ this . emitType ( type ) } ()` , this . level ) ;
1179
- emitter . emitln ( `model.fromMap(${ name } as! [String: Any])` , this . level ) ;
1187
+ emitter . emitln ( `model.fromMap(${ name } as? [String: Any? ])` , this . level ) ;
1180
1188
emitter . emitln ( `d${ num } [k${ num } ] = model` , this . level ) ;
1181
1189
this . levelDown ( ) ;
1182
1190
emitter . emitln ( '}' , this . level ) ;
@@ -1186,8 +1194,9 @@ class Combinator extends CombinatorBase {
1186
1194
}
1187
1195
1188
1196
emitFromMap ( emitter , modelName , props ) {
1189
- emitter . emitln ( 'public override func fromMap(_ dict: [String: Any] ) -> Void {' , this . level ) ;
1197
+ emitter . emitln ( 'public override func fromMap(_ dict: [String: Any?]? ) -> Void {' , this . level ) ;
1190
1198
this . levelUp ( ) ;
1199
+ emitter . emitln ( 'guard let dict else { return }' , this . level ) ;
1191
1200
props . forEach ( prop => {
1192
1201
let noteName = prop . notes . filter ( item => item . key === 'name' ) ;
1193
1202
let name = noteName . length > 0 ? noteName [ 0 ] . value : prop . name ;
@@ -1204,21 +1213,24 @@ class Combinator extends CombinatorBase {
1204
1213
if ( emt . needSave === true ) {
1205
1214
emitter . emit ( emt . output ) ;
1206
1215
} else {
1207
- emitter . emitln ( `if dict.keys.contains( "${ name } ") {` , this . level ) ;
1216
+ emitter . emitln ( `if let value = dict[ "${ name } "] as? ${ this . emitType ( prop . type ) } {` , this . level ) ;
1208
1217
this . levelUp ( ) ;
1209
- emitter . emitln ( `self.${ _name ( prop . name ) } = dict[" ${ name } "] as! ${ this . emitType ( prop . type ) } ` , this . level ) ;
1218
+ emitter . emitln ( `self.${ _name ( prop . name ) } = value ` , this . level ) ;
1210
1219
this . levelDown ( ) ;
1211
1220
emitter . emitln ( '}' , this . level ) ;
1212
1221
}
1213
1222
} else {
1214
- emitter . emitln ( `if dict.keys.contains("${ name } ") {` , this . level ) ;
1215
- this . levelUp ( ) ;
1223
+
1216
1224
if ( is . object ( prop . type ) && prop . type . objectName && prop . type . objectName . indexOf ( '#' ) === 0 ) {
1225
+ emitter . emitln ( `if let value = dict["${ name } "] as? [String: Any?] {` , this . level ) ;
1226
+ this . levelUp ( ) ;
1217
1227
emitter . emitln ( `var model = ${ this . emitType ( prop . type ) } ()` , this . level ) ;
1218
- emitter . emitln ( ` model.fromMap(dict[" ${ name } "] as! [String: Any])` , this . level ) ;
1228
+ emitter . emitln ( ' model.fromMap(value)' , this . level ) ;
1219
1229
emitter . emitln ( `self.${ _name ( prop . name ) } = model` , this . level ) ;
1220
1230
} else {
1221
- emitter . emitln ( `self.${ _name ( prop . name ) } = dict["${ name } "] as! ${ this . emitType ( prop . type ) } ` , this . level ) ;
1231
+ emitter . emitln ( `if let value = dict["${ name } "] as? ${ this . emitType ( prop . type ) } {` , this . level ) ;
1232
+ this . levelUp ( ) ;
1233
+ emitter . emitln ( `self.${ _name ( prop . name ) } = value` , this . level ) ;
1222
1234
}
1223
1235
this . levelDown ( ) ;
1224
1236
emitter . emitln ( '}' , this . level ) ;
0 commit comments