WWDC – Day 4


Another fun filled day, and now I am starting to get back into my code.

I began the day with a session on the OS.Logging extensions added into Swift. I am thinking I should change my code to start using Logging instead of print statements. I do a lot of inline print statements so when I run the code locally I can see a few key messages. But of course, once the app is deployed, I won’t get access to these. If I am to change to logging, I will be able to find out more information about my app while it is running, and when I get crash logs I should be able to get to more data.

Session 2, was actually one I saw on Tuesday, but had not marked as watched. So was a nice refresher on Scribble.

I was looking forward to Modern Cell Configuration, and while it was a very informative section, by switching over to SwiftUI last year, this session held little value to me. It does seem that they are bringing much of the declarative methods from SwiftUI back to UIKit. I have not converted my greeting card app to SwiftUI, yet, so perhaps I can take advantage of these new features.

Session 4 was on integrating hardware keyboards on iPad apps. This one is really interesting to me, as I need to add keyboard shortcuts to Wasted Time. It is really starting to come together on how I can make the app truly cross platform with the same code base. The keyboard features will allow me to take my Catalyst app and make it much more like a full fledge Mac app. If you look at what Apple has done with Messages in the latest Big Sur beta, you will see that they are serious about making iPad and iPhone apps, at home on the Mac. So my question here is, should I make the + and – keys for adding and removing people from the meeting, or should I use the up and down arrows? If I do, I could make it so holding down the key just keeps add or removing people.

Session 5 was about the new Grid and Outline views. I am very interested in the Grid format for my greeting card app. Being able to quickly see a history of all the cards I’ve sent someone over the year will make it much less likely that I’ll accidentally send them the same card. The use of the new LazyHGrid and LazyVGrid seem to really make strong performance improvements. Overall, it’s not hard to implement, so will have to do when I get back to that app.

Session 6 is all about the new way you can write a Swift app with by just using the @main entry point and the power of the new scene types. What is not quite clear to me yet is how these apps can then be extended with the various features that need to register in the AppDelegate or enable additional entry points, like Shortcuts and Intent handling. I am sure the answer to that will show itself in some demo code somewhere soon.

Session 7 was about push notifications. While I have no need for any push notifications, so this was more informational. I enjoyed learning how this all get’s setup, but in all honesty there was nothing that didn’t just make sense.

Session 8 – Sync a Core Data Store with the CloudKit Public Database. I miss read this session, but in the end it was really cool. I had figured this would take me thru how to sync my CoreData Store via CloudKit to other devices. I guess I really should pay attention to the full title. The Public Database is just that, it is Apple’s CloudKit data store for public access to data. Think of a leaderboard in an app. Having the ability to multiple people replicate data locally, and have appropriate access to the data that is common across teams of people. A key thing is how do you handle a delete, when multiple people may have it locally replicated. The discussion on that part, was well described and informative.

Session 9 – the final session of the day for me, was on Build document-based apps in SwiftUI. This really is a great example of bringing together many of the things about new Swift App structure, and SwiftUI in general, to show how easy it is to create a Document based app. Right out of the box you can create a simple text editor with the template. Updating it to handle different filetypes, etc. is what this session shows you. All in about 15 minutes. Pretty cool!