Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

Exclusive Pre-Launch Offer: Get 20% Off atgoing-indie.com

AsyncSequence explained with Code Examples

AsyncSequence is part of the concurrency framework and the SE-298 proposal. Its name implies it’s a type providing asynchronous, sequential, and iterated access to its elements. In other words: it’s an asynchronous variant of the regular sequence we’re familiar with in Swift. Like you won’t often create your custom Sequence I don’t expect you to … 

 

Downloading and Caching images in SwiftUI

Downloading and caching images is an essential part of building apps in Swift. There are several ways of downloading images with 1st party APIs 3rd party libraries. In my experience, every developer has their way of handling remote images since there’s no go-to standard. SwiftUI introduced AsyncImage as a 1st party solution to displaying remote … 

 

Error alert presenting in SwiftUI simplified

Presenting error alerts in apps is essential to communicate failures to your end-users. The happy flow of apps is often implemented well, but the unhappy flow is equally important. Managing all kinds of error alerts can be frustrating if you have to present them all individually. While building my apps, I’m constantly seeking generic solutions … 

 

AnyObject, Any, and any: When to use which?

AnyObject and Any got a new option any as introduced in SE-355, making it harder for us developers to know the differences. Each option has its use cases and pitfalls regarding when not to use them. Any and AnyObject are special types in Swift, used for type erasure, and don’t have a direct relationship with … 

 

How to use the #available attribute in Swift

Marking pieces of code as available or unavailable per platform or version is required in the ever-changing landscape of app development. When a new Swift version or platform version arrives, we’d like to adapt to it as soon as possible. Without throwing away support for older versions we can make use of the available attribute …