Open Source @ HUK-COBURG – SchwiftyResources

Wir haben es gewagt, und unser erstes Open-Source-Framework in der Programmiersprache Swift für iOS, iPadOS und macOS veröffentlicht!

Für die Offenlegung des Quelltextes sprachen mehrere Gründe.

Es handelt sich dabei um ein sehr generisches Framework und wir wollten allem voran der Open-Source-Community, von der wir alle zweifelsohne immens profitieren, wieder etwas zurück geben. Außerdem gelten auch hierfür die altbekannten Vorteile, wie Beispielsweise die Möglichkeit der Mitarbeit und Weiterentwicklung von Dritten an der Software.

Selbstverständlich stolpert man mit so einem Vorhaben bei einem großen Konzern auch über das ein oder andere Hindernis.

So mussten wir zunächst unter anderem die Rahmenbedingungen mit unserer IT-Sicherheit und Rechtsabteilung abstimmen, um zu klären, unter welchen Voraussetzungen unser Quelltext veröffentlicht werden darf.

SchwiftyResources – was es ist

Es ist eine Abstraktion zum Speichern und Laden von Daten.

Das hört sich im ersten Moment eventuell nicht sonderlich spektakulär an, aber es vereinfacht die Entwicklung unserer Apps (Meine Gesundheit und Mein Auto) ungemein.

Das Framework bietet die Möglichkeit Ressourcen aus verschiedenen Quellen auf gleichem Weg zu laden und zu speichern.

Diese können im Netzwerk (HttpResource), im App-Bundle (BundleResource), auf dem Dateisystem (FileResource), in der App-Sandbox (SandboxResource) oder in den UserDefaults (UserDefaultsResource) lokalisiert sein. Sie beschreiben also den Ort, von dem die Daten stammen.

Des Weiteren muss noch angegeben werden, um welche Daten es sich handelt. Das geschieht mittels ResourceCoder.

Davon gibt es eine Hand voll, wie beispielsweise für UTF8 kodierte Texte (StringResourceCoder) oder zum en- und dekodieren von JSON-Daten in typensichere Modelle (JsonResourceCoder).

Resources und ResourceCoder können hierbei beliebig miteinander kombiniert werden.

Implementierung – wie es konkret aussieht

Ok, genug der vielen Worte – es ist Zeit für eine Beispiel-Implementierung.

Um typensicher ein JSON enkodiertes Modell aus dem Netzwerk zu laden reicht dieser Code aus:

Weiteres – was es sonst noch kann

Selbstverständlich ist das noch nicht alles und es gibt zahlreiche Möglichkeiten die Funktionsweise an die eigenen Bedürfnisse anzupassen. Zum Beispiel das Modifizieren von Requests, Fortschrittsrückmeldungen oder das Überschreiben von Standardimplementierungen.

Da Datensicherheit und Verschlüsselung eine immer größere Rolle spielen, gibt es zudem die Möglichkeit mittels CryptedDataResourceCoder oder CryptedJsonResourceCoder sehr einfach kryptografische Daten zu schreiben und lesen.

Ein kleines Beispiel zum typensicheren Speichern und Laden von verschlüsselten Daten in der App-Sandbox:

GitHub – wo es zu finden ist

Als Plattform für die Veröffentlichung haben wir uns für GitHub.com entschieden.

Dementsprechend kannst Du SchwiftyResources hier finden: https://github.com/HUK-COBURG/schwifty-resources

Veröffentlicht am 03. Mai 2023 – Autor: Johannes Bosecker

Johannes

Du hast Lust, uns und unsere Abteilung zu unterstützen?

Wir suchen noch App-Entwickler: Android Entwickler

Zum Stellenmarkt