My Top 3 Wishes for WWDC 2022. With Apple announcing WWDC week for… | by Cihat Gündüz | Apr, 2022

Photograph by Mike Arney on Unsplash

Annually, there’s this very particular time, when a particular group of individuals is making needs and getting their hopes up for all kinds of issues. Some share their wishes with others, some simply maintain them secret of their heads to not get too disenchanted if not fulfilled. I was within the latter group, however this time I’d prefer to share my needs to enhance the chance of them coming true — if not this yr, then possibly the subsequent. In any case, Santa may be listening.

I’m going to skip any of the plain matters which can be on prime of just about each iOS developer’s checklist, reminiscent of a extra steady Xcode, a extra bug-free Swift, a extra full SwiftUI, or extra dependable SwiftUI Previews. Let’s get began!

Drawback

Each app is required to have an app icon. Xcode requires us to supply the app icon in dozens of various sizes although, with none help to resize them. Whereas there are numerous apps & instruments to assist get there, just a few of them help the newest set of sizes as Apple likes so as to add new sizes over time. That is an pointless impediment for brand spanking new builders simply beginning.

The momentary App Icon set of my Open Focus Timer app

Answer

When dragging & dropping a 1024×1024 picture to the AppIcon set or the App Retailer entry within it, Xcode ought to ask us if we need to use this as a reference picture to generate all different sizes from. The identical may additionally occur when dragging & dropping an SVG file, though I might already be pleased with the 1024x sizes one.

An alternative choice to drag & drop could possibly be an possibility on the best pane when choosing the AppIcon picture set named one thing like “Generate sizes on archive” so that you all the time solely want to supply and even commit one measurement and Xcode would generate the others on the fly when archiving for a launch.

Likelihood

.xcassets had been launched alongside Xcode 5 in 2013. They haven’t obtained a lot love since then, so I doubt that is ever coming. However, Swift Playgrounds on the iPad does appear to have the ability to generate all sizes from only one “picture”. Whereas this would possibly technically work with vector graphics, possibly we would see this very same icon generator in Xcode someday?

Creating App Icons in Swift Playgrounds on iPad

Drawback

Working in app targets with numerous recordsdata which can be grouped in folders to loosely signify options that belong collectively is straightforward however has its drawbacks. For instance, to check out the smallest code change, you want to construct your entire undertaking. This additionally comes with SwiftUI previews working much less reliably or simply taking very lengthy to point out your modifications. Whereas incremental builds aren’t that gradual, in apply you do make modifications somewhere else too after which Xcode has to construct greater than wanted. Otherwise you’re explicitly telling Xcode to make a clear construct as a result of, properly, by some means Xcode doesn’t behave as anticipated.

However construct occasions aren’t the one downside of a single-target undertaking. Having all of your sorts in a single important module means that you’ve entry to every type from all over the place as a result of Swift defaults to the inside entry degree — this isn’t good because it might make your code more durable to reuse and take a look at. And even when you wished to mark all of your properties & features explicitly with a decrease entry degree, you may’t use non-public or fileprivate as quickly as it’s important to entry them from only one different file — it’s additionally simple to neglect so as to add these.

The present workaround I personally use is defined by Stephen and Brandon from Level-Free in this video intimately. Whereas it fixes each the above issues, it’s a trouble to maintain the Package deal.swift file up to date manually. Simply take a look at this manifest file of my (at the moment) one-screen solely Focus Timer app.

A small excerpt of a manually modularized apps `Package deal.swift` manifest.

Answer

Apple might present a brand new UI inside Xcode that enables for creating packages for our app’s modules with out having to do any workarounds like talked about above. I believe the simplest means to do that is so as to add help to the present “targets” UI, however with an additional part for Swift packages and with SwiftPM because the underlying know-how. Additionally, at any time when I might reference a sort from a module, Xcode might warn me that I’m accessing an inaccessible module and ask me if I wished so as to add it as a dependency to the present module.

This might even go thus far that Xcode would possibly ask us if we need to create an Xcode project-based app or a SwiftPM based mostly one. Whereas I don’t anticipate (or request) a full substitute of the .xcodeproj file with a Package deal.swift file this yr (there’s nonetheless some work to be done in SwiftPM for that, like including construct scripts, and many others.), I believe it’s doable to not less than migrate over the linking of packages to a SwiftPM based mostly basis.

Likelihood

As a lot as I’d prefer to see this yr, I believe Apple isn’t going to do a lot on this course till SwiftPM is able to totally change .xcodeproj recordsdata. I believe they’re “all or nothing” on this space, so I don’t have my hopes up for this yr. However possibly subsequent yr with a beta flag to choose into?

Drawback

Core Information was launched by Apple in 2005 alongside Mac OS X 10.4 Tiger as a means to supply builders a nicer API than utilizing SQL directives. Shortly it grew to become the go-to database framework for native app growth, and it nonetheless is. However it was written for Goal-C, clearly. Simply take a look at this straightforward mannequin:

Notice that every one these fields are specified to be non-optional in Core Data:

However they’re all generated as Optionally available sorts in Swift code anyhow. This and the entire NSManagedObjectContext API design feels fairly outdated and never very “Swifty” (as in “not secure”). It’s time for one thing new!

Answer

Apple might introduce a brand new Swift-only framework (like SwiftUI) named one thing like SwiftData which offers a high-level API to outline and handle persistable fashions. Defining a mannequin might look one thing like this:

For fashions to retailer in iCloud, you’d must prepend distributed in entrance of actor. Usually accessing any property of an actor would require the await key phrase, however some magic property wrappers might simplify this to:

And writing to an actor property isn’t doable from exterior, however the @Persevered property wrapper may need some Binding magic to permit this:

I’ve to confess, I’ve not used Actors in apply but, so forgive me if a few of the above examples don’t make any sense. However I’ve a sense that Actors might play an essential position in a SwiftData framework for secure entry.

Moreover, Xcode might include a UI that makes it simple to model knowledge fashions and supply a graphical migration device that could possibly be written in a declarative Swift syntax and be previewed as a UML diagram on the best (like SwiftUI previews). However possibly I began dreaming too huge right here …

Likelihood

Many had been anticipating this already for the final two years as a result of it’s a logical subsequent step after SwiftUI. However this yr, with Actors already shipped in Swift 5.5 and Distributed Actors (for iCloud help) being accepted only recently as properly, the know-how would possibly simply be able to ship the primary model by September.

There are many issues Apple might announce in June, and the above are simply my private needs. However previously, I used to be all the time stunned by not less than one or two frameworks fully, like SwiftUI in 2019, WidgetKit in 2020, and DocC in 2021. What’s going to it’s this yr? I can’t wait to search out out!

Need to Join?Comply with me additionally on 👾 Twitch, on 🎬 YouTube, and on 🐦 Twitter.

Notice: The 2nd a part of my “Streaming on Twitch” series is postponed to subsequent week.

More Posts