Ralf Ebert (@RalfEbert) header
Ralf Ebert (@RalfEbert) profile picture

Independent Software Engineer and Interaction Designer #iosdev, #swiftlang, #swiftui

Dresden, Germany
Joined March 2021
Photo by Ralf Ebert (@RalfEbert)Photo by Ralf Ebert (@RalfEbert)Photo by Ralf Ebert (@RalfEbert)Photo by Ralf Ebert (@RalfEbert)Photo by Ralf Ebert (@RalfEbert)Photo by Ralf Ebert (@RalfEbert)Photo by Ralf Ebert (@RalfEbert)Photo by Ralf Ebert (@RalfEbert)
I've been working on version 7 of the geotrainer app the last months. The flag quiz got a big update with two new quiz modes, and there is much more to discover! App Store: apple.co/2PJU566 Tour: youtube.com/watch?v=2_xdja-z… #iOSApps #iOS18
1
4
217
First few minutes with Xcode 14 and I have tears of joy for how fast the debugger is. The app starts in a breeze, breakpoint hit and you can start printing variables as if we were in 2022. Amazing.
9
21
4
239
🎉
9
43
7
322
🔥 Looking forward to the collaboration API, scribbling in Freeform, using the iPhone as a webcam.
Here's a quick tour through the geotrainer app and what's new in version 2.1. youtube.com/watch?v=-JaAZcMP…
2
🎉 geotrainer 2.1 is available in the App Store! → geotrainer.app/
1
7
WWDC'22 wishlist: * Code completion always working * Debugger working without long delays * No more "compiler is unable to type-check this expression in reasonable time" * No more "Making Apple Watch ready" * No new features that could break any of those. Please. Pleeeaaase.
13
12
5
104
In case you ever wondered, both CurrentValueSubject and a ObservableObject property Publisher immediately send a notification with the current value when a new subscriber is added. Now, tricky question: Is there a way to require this behaviour with a protocol?
1
1
What format do you like best for getting training materials after a developer training course?
46%PDF with slides/snippets
8%Printed folder/book
8%App
38%Online access
13 votes • Final results
Setting a random background color is a great way to detect an accidental SwiftUI loop. The tricky part is understanding what triggers the loop tho.
15
77
9
620
🎉 My geography quiz geotrainer.app got mentioned on the German app store. This is a good motivational boost for the upcoming release I'm currently working on.
1
6
With a simple extension you can make it really easy to add #SwiftUI views as a subview to your UIView. @WeTransfer we always consider writing new features in SwiftUI to speed up our transition. avanderlee.com/swiftui/integ… #swiftlang #iosdev
1
2
28
Has anyone seen TestFlight demand to accept new "Apple Media Services Terms" when testing to buy an in-app-purchase which then always results in an error "no connection"? This one is really spoiling the mood here right now. stackoverflow.com/questions/…
1
1
I hope we get something like AsyncView in the next version of SwiftUI. Like AsyncImage but for data. Would be so cool to be able to load data and have a default mechanism for progress indication and error handling. For now, here is package for that: github.com/ralfebert/AsyncVi…
3
2
29
A quick walk-through how to implement the observer pattern in Swift for iOS Apps. How to send an event in one object and subscribe to events in another object. The Combine framework provides a nice abstraction for this use case. youtube.com/watch?v=XN2Tu3go…
4
#SwiftUI Advanced Tipp: How to use TextField with optional String? properties: Use a custom-defined ?? operator which converts between Binding<String?> (.none) and Binding<String> (""). Source code / Swift package: github.com/ralfebert/SwiftUI…
2
1
1
11
How do you represent the case "no value/unknown" for strings?
89%var name : String? = nil
11%var name: String = ""
19 votes • Final results
Dependencies struct defines all the low-level pieces that we need to implement our view model. This approach exposes only necessary low-level logic to our view model. The SearchViewModel defines its own dependencies and requires them to compile. swiftwithmajid.com/2022/02/0…
5
5
1
59
For the Views deep-down in a SwiftUI app, use only Struct types, passed as value or binding. Build complex logic (async loading etc.) as wrapper View around those. Can be tricky to keep the line between the layers. But it's well worth it for maintainability+enabling Previews.
4