Skip to content

Commit 09cbde1

Browse files
committed
fix: swift
1 parent 830aeb4 commit 09cbde1

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/SDK/Language/Swift.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,10 +302,10 @@ public function getFiles(): array
302302
public function getTypeName(array $parameter, array $spec = [], bool $isProperty = false): string
303303
{
304304
if (isset($parameter['enumName'])) {
305-
return ($spec['title'] ?? '') . 'Enums.' . \ucfirst($parameter['enumName']);
305+
return \ucfirst($parameter['enumName']);
306306
}
307307
if (!empty($parameter['enumValues'])) {
308-
return ($spec['title'] ?? '') . 'Enums.' . \ucfirst($parameter['name']);
308+
return \ucfirst($parameter['name']);
309309
}
310310
if (isset($parameter['items'])) {
311311
// Map definition nested type to parameter nested type

templates/swift/Sources/Models/Model.swift.twig

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,19 @@ open class {{ definition | modelType(spec) | raw }}: Codable {
5454
let container = try decoder.container(keyedBy: CodingKeys.self)
5555

5656
{%~ for property in definition.properties %}
57+
{%~ if property.enum %}
58+
{%~ if property.required %}
59+
self.{{ property.name | escapeSwiftKeyword | removeDollarSign }} = {{ property | propertyType(spec) | raw }}(rawValue: try container.decode(String.self, forKey: .{{ property.name | escapeSwiftKeyword | removeDollarSign }}))!
60+
{%~ else %}
61+
if let {{ property.name | escapeSwiftKeyword | removeDollarSign }}String = try container.decodeIfPresent(String.self, forKey: .{{ property.name | escapeSwiftKeyword | removeDollarSign }}) {
62+
self.{{ property.name | escapeSwiftKeyword | removeDollarSign }} = {{ property | propertyType(spec) | raw }}(rawValue: {{ property.name | escapeSwiftKeyword | removeDollarSign }}String)
63+
} else {
64+
self.{{ property.name | escapeSwiftKeyword | removeDollarSign }} = nil
65+
}
66+
{%~ endif %}
67+
{%~ else %}
5768
self.{{ property.name | escapeSwiftKeyword | removeDollarSign }} = try container.decode{% if not property.required %}IfPresent{% endif %}({{ property | propertyType(spec) | raw }}.self, forKey: .{{ property.name | escapeSwiftKeyword | removeDollarSign }})
69+
{%~ endif %}
5870
{%~ endfor %}
5971
{%~ if definition.additionalProperties %}
6072
self.data = try container.decode(T.self, forKey: .data)
@@ -65,7 +77,7 @@ open class {{ definition | modelType(spec) | raw }}: Codable {
6577
var container = encoder.container(keyedBy: CodingKeys.self)
6678

6779
{%~ for property in definition.properties %}
68-
try container.encode{% if not property.required %}IfPresent{% endif %}({{ property.name | escapeSwiftKeyword | removeDollarSign }}, forKey: .{{ property.name | escapeSwiftKeyword | removeDollarSign }})
80+
try container.encode{% if not property.required %}IfPresent{% endif %}({{ property.name | escapeSwiftKeyword | removeDollarSign }}{% if property.enum %}.rawValue{% endif %}, forKey: .{{ property.name | escapeSwiftKeyword | removeDollarSign }})
6981
{%~ endfor %}
7082
{%~ if definition.additionalProperties %}
7183
try container.encode(data, forKey: .data)

0 commit comments

Comments
 (0)