Today I learned
SwiftUI @main AppDelegate
When using @main
on a SwiftUI.App
and @UIApplicationDelegateAdaptor(AppDelegate.self)
you can still have an AppDelegate
without handling SwiftUI manually as without @main
.
You don’t even need a SceneDelegate
! A huge difference for tiny apps!
Android Permission now requires a description
Now, Android apps require a description for each permission. Back then, it was optional.
In contrast to iOS, this is only a guideline and not enforced by the Android SDK. Instead the developer needs to implement their own alert. But with great power, comes great responsibility as it could be abused.
Updating Bitrise binary uploads
Bitrise binary uploads cannot be updated after saving. Instead they need to be deleted and recreated. Thus all workflow steps need to be updated if they rely on the data.
Pro-tip: when copy-pasting, skip the BITRISE_IO
and _URL
parts – they will be inserted automatically when using the web UI.
Localization order
When maintaining multiple locales within your project, try to keep line numbers consistent across all locales. Also keep the order of translations consistent.
That makes differences easy to spot.
SwiftUI translations and UIKit
Nothing new today, but a quick reminder:
Even if you don’t need to explicitly localize String
literals for Text
manually, you can still need to when passing Strings to UIAlertController
or other UIKit classes.
Of course. But sometimes I still forget while writing the code.
ftp-simple vscode workspace
ftp-simple allows opening FTP connections as VS Code workspace!
Localizcable vs Swift unicode escapes
Localizable.strings
doesn’t support unicode \unnnn
escapes, but only \Unnnn
!
In Swift the \U
is for UTF-16 escapes like \Unnnnnnnn
.
Android XML Translations
The Android Studio tooling for Android apps checks and validates all translation keys. Even if they are present within the base language. This comes in handy after greater refactorings.
But sadly the XML does not support XML escapes as '
.
NSDataDetector
How to detect a URL in a String using NSDataDetector - free Swift 5.1 example code and tips https://www.hackingwithswift.com/example-code/strings/how-to-detect-a-url-in-a-string-using-nsdatadetector
Coordinator [unowned self]
An [unowned self]
in a Coordinator is okay.
As the coordinator should live longer than any of its screens, a crash hints to lifecycle issues.