Test Plans are now Default for New Projects with Xcode 14.3
Since Xcode 11, when Apple introduced Xcode Test Plans for simpler, more configurable test management and execution, both new and existing projects had to manually convert to using the new system or create new test plans from scratch. Test plans, if you are not familiar, allow one file to control one or more test configurations…
UI Test Changes to SwiftUI List and Stepper in iOS 16
Since SwiftUI came out, the extremely useful List control, for creating scrolling, single column, table-style views has been backed under the hood by UITableView. While this probably made it simpler and faster to release the feature, it also had the side effect of tying SwiftUI implementation to a lot of legacy code. With iOS 16,…
We’ll Miss You, 360 iDev
As a budding mobile developer back in early 2012 working on my first app, everything about iOS was new and different from the .NET world with which I was familiar. Living in the Denver area at the time, I stumbled upon this local conference named 360|iDev. What I found there was an awesome experience with…
Improving Your User Interface Tests in Xcode and iOS
Since writing about dealing with continuous integration and Apple Silicon as well as retrying failed tests, I’ve been thinking some more about iOS and Xcode test automation and would like to share some useful tips and thoughts on that front. Hopefully these pointers will help you out with something with which you might be dealing…
Working Around Xcode and Continuous Integration Issues on Apple Silicon
So like probably more than a few people, we jumped in and bought two of the new Apple silicon M1 Mac Mini’s to replace a couple aging Intel-based build servers at work. Our old servers were running Jenkins with a pretty standard configuration to build and test our iOS apps. The initial transition was pretty…
Retrying Failed Tests With Xcode 13 and Continuous Integration
As developers we never want our tests to fail, but there are often real world cases, especially with UI and integration tests against actual API (as opposed to a stable mock API or static data), where tests can and will occasionally fail. For example, API’s may go down, dependent data may change, or the Xcode…
Creating Custom Parseable Format Styles in iOS 15
Since way back in iOS 2.0, the venerable Formatter class and its derivations such as DateFormatter and NumberFormatter have been the go-to for converting values to and from strings. Over the years Apple has added other cool formatters such as the ByteCountFormatter, MeasurementFormatter, RelativeDateTimeFormatter, and ListFormatter. Now, as discussed in What’s New in Foundation at…
Refactor or Rewrite? Tackling Legacy Apps
If you’ve been programming for any length of time, you’ll likely run across apps or other projects that need major work and revisions to keep going. Maybe your company acquired another company with tons of legacy code. Perhaps you just started a new gig with lots of skeletons in the proverbial closet. Or you’re an…
Accessibility Gets an Upgrade in Xcode 13 Storyboards
WWDC 2021 is behind us and there are so many new and exciting features available to us as developers. One of those areas that has been getting much more love from Apple over the last few years is accessibility. Apple has been making it simpler for developers to test key tools like Dynamic Type, Dark…
Registering Collection View Cells in iOS 14
In my last post, I looked at handling diffable data sources with different types of object data, focusing primarily on the venerable UITableView for my examples. We looked at a simple if…else construct to swap between cell types based on the type of the item from the data source and related snapshot. While this method…
Using iOS Diffable Data Sources with Different Object Types
Since iOS 13, we’ve been able to revamp the way our table and collection views work by using diffable data source classes (UITableViewDiffableDataSource and UICollectionViewDiffableDataSource respectively) and snapshots. This provides the advantage of being able to write less code for these types of views, while making our state management much more robust and less likely…
New UIDatePicker Styles in iOS 14
One of the nice new features that came out with iOS 14 were some new options around the venerable UIDatePicker. There are now some choices other than just the slot machine-style wheels! Since iOS 2.0, the original style of UIDatePicker has been the only standard UIKit option for developers looking to let users select dates…
Identify Supported Images and Create Collections in SF Symbols 2
If you’ve been doing any sort of app development with iconography since iOS 13 came out, there’s a good chance you leveraged the original SF Symbols app. With around 1,600 scalable, vector-based symbols integrating with the system San Francisco font, along with guidance for creating your own symbols, it was ground-breaking in terms of providing…
Better Uniform Type Identifiers with Xcode 12
If you’ve been doing any kind of file uploads, downloads, previews, and such in past versions of Xcode and needed to deal with MIME types or file extensions, you’ve probably had to deal with Uniform Type Identifers. Using CoreServices and some of its methods such as UTTypeCreatePreferredIdentifierForTag and UTTypeCopyPreferredTagWithClass could avoid some hard-coding of identifiers…
Manage Developer Disk Space Easily with macOS Big Sur
Prior to macOS 11 Big Sur, cleaning up development disk space by deleting old iOS or watchOS device support versions and Xcode caches was something of a pain, requiring command-line calls to directories scattered in a number of different places. For example to delete Xcode cache you might run something like this. You might also…
Follow My Blog
Get new content delivered directly to your inbox.