Autor-Archiv Tobias Stephan

VonTobias Stephan

SwiftUI Mac OS Menu bearbeiten entfernen

Meine App habe ich nun auch als Mac OS App veröffentlichen wollen. Das geht ja nun mittlerweile. Bei der Prüfung ist die App jedoch abgelehnt worden, weil keine Hilfe hinterlegt und beim Klick auf das Help Menu kein Hilfetext angezeigt wurde. Mit folgender Ergänzung habe ich einfach die überflüssigen Menüpunkte entfernt.

//Insert in AppDelegate.swift
override func buildMenu(with builder: UIMenuBuilder) {
        super.buildMenu(with: builder)
        /* Do something */
        builder.remove(menu: .view)
        builder.remove(menu: .format)
        builder.remove(menu: .edit)
        builder.remove(menu: .file)
        builder.remove(menu: .window)
        builder.remove(menu: .help)
}
VonTobias Stephan

Swift random Zufallszahl ermitteln

Mit dieser einfachen Zeile ermittelst Du eine Zufallszahl zwischen 0 und 100

let number = Int.random(in: 0 ... 100)
VonTobias Stephan

Gedächtnistraining Mastertabelle


Direkt zum App-Store von Apple um den Memory Trainer zu laden.

Wie kann ich mir auch durchaus 20 Ziffern in richtiger Reihenfolge merken? Das Prinzip ist einfach. Im Kern gibt es Konsonanten von 0 bis 9, die jeweils eine Bedeutung haben. Für die Zahlen gibt es jeweils Wörter. Wenn Du Dir nun eine lange Ziffer merken möchtest, könntest Du Dir für die 7 immer ein Wort mit dem Konsonanten K ausdenken. Das wäre jedoch sehr aufwändig und würde nicht zum Erfolg führen. Der Trick liegt in der Wiederholung der immer gleich verwendeten Wörter für das Gedächtnistraining. Für die 7 steht die Kuh. Jetzt brauchst Du nur 100 Wörter lernen, klingt viel, ist es aber gar nicht.

Zahlen merken – RauPe

Nehmen wir als Beispiel das Wort Raupe. Aus der Zahlentabelle 0 bis 9 erkennen wir:

R = 4
P = 9

In dem Wort Raupe zählen nur die Konsonanten. Aus RauPe wird nur noch RP – das lässt sich leicht übersetzen.

Machen wir das mal andersrum. Die PIN Nummer Deiner EC-Karte lautet:

4811

Wir benötigen also die Buchstaben R F T T – da wir fleißig die Mastertabelle auswendig gelernt haben, erkennen wir, das es für die 48 das Wort REIF gibt und für die 11 den TOT. Schon ist das Merktwort fertig: REIFTOT. Die Rückübersetzung ist immer schnell und viel

Ziffer-Konsonanten-Kodierung
Ziffer Haupt- konsonant Merkhilfen weitere Konsonanten
0 z 0 ist im Roulette „Zero“ s, ß
1 t 1 hat einen Strich wie t d
2 n n hat 2 Striche nach unten
3 m m hat 3 Striche unten
4 r r ist der letzte Buchstabe von vier
5 l L ist das römische Zeichen für 50
6 sch Die ersten drei Konsonanten von „sechs“ ch, j, weiches c
7 k Sie sehen (etwas) ähnlich aus ck, g, hartes c
8 f (das altdeutsche) f ist ähnlich zu 8 v, w, ph
9 p p ist das Spiegelbild zu 9 b
Master-System-Tabelle
0. Sau 20. Nase 40. Rose 60. Schüsse 80. Faß
(0)1. Tee (Service) 21. Naht (Messer) 41. Ratte 61. Schutt 81. Fit (Kniebeuge)
(0)2. Noah 22. Nonne 42. RAN (Mikrophon) 62. Scheune 82. Fahne
(0)3. Mai (Blumen) 23. Nemo (Kapitän) 43. Rum 63. Schaum 83. WM (Medaille)
(0)4. Reh 24. Narr (Hampelmann) 44. Rohr 64. Schere 84. Furi (Pferd)
(0)5. Lee (Jeanshose) 25. Nil (Schlauch) 45. Rolle 65. Schal 85. Falle
(0)6. Schi 26. Nische [Nasche] 46. Rauch 66. Schach 86. Fisch
(0)7. Kuh 27. Nike (Schuh) 47. Rock 67. Scheck 87. Waage
(0)8. Fee 28. Neffe 48. Reif 68. Schaf 88. Waffe
(0)9. Po 29. Nappa (Leder) 49. Raupe 69. Scheibe (Glas) 89. VIP (Krone)
10. Tasse 30. Moos 50. Lasso 70. Käse 90. Bus
11. Tot (Skelett) 31. Matte 51. Latte 71. Kette 91. Bett
12. Tanne 32. Mang (Motorrad) 52. Linie 72. Kanne 92. Bahn
13. Team 33. Mama 53. Leim 73. Kamm 93. Baum
14. Teer 34. Meer (Wassereimer) 54. Leier 74. Karre 94. Bier
15. Tollwut (Hund) 35. Müll 55. Lolli 75. Keule 95. Ball
16. Tasche 36. Masche 56. Loch 76. Koch 96. Buch
17. Theke 37. Mac (Burger) 57. Lack 77. Kacke 97. Backe (Ohrfeige)
18. Taufe 38. Mafia (Kettensäge) 58. Lava (Gestein) 78. Kaffee 98. Bifi (Wurst)
19. Taube 39. Map (Straßenkarte) 59. Lupe 79. Kappe 99. Papa
VonTobias Stephan

Deine Datenspende gegen Corona COV19

Das RKI (Robert-Koch-Insititut) hat eine App mit Bitte um Datenspende rausgebracht. Mir ist es ein echtes Anliegen, dass man sich mit dem Thema auseinandersetzt, bevor man es wegen Datenschutz ablehnt. Da ich selber Apps entwickle, spreche ich mir die Kenntnis zu, das Datenschutzrisiko ein wenig einzuschätzen. Ich gehe davon, dass das RKI keine anderen Mittel bei Apple zur Verfügung stehen, als dem “gemeinen” Entwickler. Die Daten werden pseudonymisiert abgelegt. Nicht anonym, aber halt pseudonym. Das bedeutet, daß dem Nutzer ein Token (Schlüssel) zugewiesen wird. mehr aber auch nicht. Das RKI kennt keinen Namen oder eine Mailadresse. Eine solche App ist aber ein echtes Mittel im Kampf gegen Corona COV19.

App im Google Playstore

IOS iPhone / iPad App

Zum Podcast des NDR mit Prof. Drosten

Hier sind weitere Details zur Datenspende des RKI

Zu meinen Corona COVID-19 Statistiken

Die Datenspende App des RKI

VonTobias Stephan

SwiftUI Lokalisierung mit mehreren Sprachen

Datei > Neu > File ->> Strings File erstellen > Name kann z.B.: Localizeable.Strings heissen.

Als nächstes im Fileinspector auf die neu erstellte Datei klicken und rechts im Bildschirm den Button Localizeable anklicken.

Syntax der Übersetzungen:
“welcometitle” = “Welcome”;

…ganz wichtig, Semikolon am Ende nicht vergessen

Wenn man nun ein schreibt:

Text(“welcometitle”) – so wird der Text aus der Lokalisierung genommen.

Um eine Variable zu lokalisieren, verwendet man:

NSLocalizedString(sStringVar, comment: "")

Damit weitere Lokalisierungen hinzugefügt werden können, Die Lokalisierungsdatei links anklicken und rechts die Sprache auswählen.

Wie schon beschrieben kann man unter Swift UI zum Beispiel einfach

Text("lokalisierteVariable")

schreiben. Manchmal möchte man aber an mehreren Stellen Strings zusammensbauen. Dabei hilft

Text(NSLocalizedString("lokalisierteVariable", comment: ""))
VonTobias Stephan

Swift url validation – gültige URL mit regex prüfen

Mit dieser einfachen kleinen Funktion kannst Du prüfen ob eine URL valide ist.

    func isValidUrl(urlString: String) -> Bool {
        let pat = "((https|http)://)((\\w|-)+)(([.]|[/])((\\w|-)+))+"
        let regex = try! NSRegularExpression(pattern: pat, options: [])
        
        let matches = regex.numberOfMatches(in: urlString, options: [], range: NSMakeRange(0,urlString.utf16.count))
        if (matches == 1 ) {
            return true
        }
        else {
            return false
        }
    }
VonTobias Stephan

Website Änderung überwachen und tracken

Eine einfach zu bedienende iPhone App, mit der man eine Url auf Änderungen überwachen kann.
Die App ist nun im Apple Store verfügbar:

Was macht die App besonders?
Die Webseitenabrufe werden extern von einem Server erledigt. So ist die App nicht abhängig vom Wohlwollen Deines IOS. Was ist damit gemeint? Das Apple IOS organisiert die Zuteilung von Background-Rechenkapazität auf Deinem iPhone oder iPad. Deshalb ist es in diesem Fall sinnvoll die Berechnung und das prüfen auf Website-Änderung durch einen externen Server erfolgen zu lassen. Wenn Du Deiner Überwachungsliste eine URL hinzufügst, dann wird diese in regelmässigen Abständen besucht. Die Benachrichtigung erfolgt als Push-Mitteilung.

Website Tracker im App Sotre
eXODA Website Watcher Tracker App

Hier geht’s zur App im Apple Store…

VonTobias Stephan

Firebase Invalid Key Type Error 401

Herrjeh, was ein Kampf! Eine halbe Ewigkeit habe ich nach der Lösung gesucht. Es muss einfach der richtige Serverschlüssel verwendet werden. Die im Titel erwähnte Fehlermeldung ereilte mich bei der Entwicklung einer C# Anwendung zum Verteilen von Push-Notifications auf IOS-Devices.

Über die Prejkteinstellungen gelangt man auf die korrekte Seite. Projekteinstellungen der entsprechenden App und dann auf Cloud Messaging.

VonTobias Stephan

Wenn das Corona Bosch Covid-19 Analysegerät funktioniert…

Wenn das Corona Covid-19 Analysegerät funktioniert, haben wir die Krise im Griff. Das ist zumindest meine Einschätzung der Situation. Vorraussetzung dafür wäre, dass Menschen, die Corona überstanden haben danach immun sind. Korea ist im Kampf gegen Corona sehr erfolgreich, wenn man den Medienberichten glauben schenken darf.

Quelle: Große Zahl an Tests und App-Überwachung: Südkorea zeigt sich als Vorreiter bei der Corona-Bekämpfung

Jede Apotheke, Arztpraxis oder aber die Krankenhäuser sollten die Analysegerät und Kartuschen im Einsatz haben. Das Testgerät soll 15tsd Euro kosten.

Quelle: Manager Magazin

Die Kartusche ist mit 50 bis 100 Euro sicherlich sehr teuer. Hier wäre es Sache des Staates das massiv zu subventionieren, denn mehr Geld kann der Staat nicht sparen. Ich bin gespannt, wie man reagieren wird.

Tägliche Übersicht der Steigerungsrate der Infiziertenzahlen.

VonTobias Stephan

Swift Leerzeichen aus String entfernen

So entfernst Du die Leerzeichen am Anfang und Ende eines Strings.

let str = "  Remove whitepaces  "
let trimmed = str.trimmingCharacters(in: .whitespaces)
print(trimmed)

Bei diesem Beispiel wird aus ” Remove whitepaces ” einfach nur “Remove Whitespaces”. Das Leerzeichen zwischen Remove und whitespaces bleibt dabei natürlich erhalten. .whitepaces ist eines der möglichen Charactersets.