Hi there, welcome to the 48th issue! Today you'll learn about initializing views, sorting arrays of strings, modern
UISegmentedControl, and setting up git-ignore for your project. Enjoy! 🌞
What happens when you survey 1600+ Mobile DevOps teams? You get 5 key Mobile DevOps benchmarks that can guide mobile teams to high performance. Download our free report and start setting goals for your team based on industry-recognized benchmarks.
Download free report
Lightweight view initialization
Initializer of a SwiftUI view should be as lightweight as possible, as it is executed many times. In fact, it's a good rule of thumb for
UIViewController initializers too - keep the heavier work for the moment when the view loads or appears.
Sorting user-entered strings
Don't just use
.sorted() on arrays of strings. A quote from
This method should be used whenever file names or other strings are presented in lists and tables where Finder-like sorting is appropriate. The exact sorting behavior of this method is different under different locales and may be changed in future releases. This method uses the current locale.
By the way, Swift's String implementation is so great, that it already treats special characters correctly during equality checks with
==. Using the right comparing method brings the same greatness to sorting of strings 🙌
An example from the Swift docs about equality with diatrics:
écan be represented as the single Unicode scalar
LATIN SMALL LETTER E WITH ACUTE, or
U+00E9). However, the same letter can also be represented as a pair of scalars — a standard letter
LATIN SMALL LETTER E, or
U+0065), followed by the
COMBINING ACUTE ACCENTscalar (
COMBINING ACUTE ACCENTscalar is graphically applied to the scalar that precedes it, turning an
éwhen it’s rendered by a Unicode-aware text-rendering system.
Stringvalues (or two
Charactervalues) are considered equal if their extended grapheme clusters are canonically equivalent.
LATIN SMALL LETTER E WITH ACUTE(
U+00E9) is canonically equivalent to
LATIN SMALL LETTER E(
U+0065) followed by
COMBINING ACUTE ACCENT(
U+0301). Both of these extended grapheme clusters are valid ways to represent the character
é, and so they’re considered to be canonically equivalent
Read the article from the tweet to learn about more ways of sorting arrays of strings.
Lovely modern API for reacting to
UISegmentedControl selection, that doesn't require
@objc methods anymore:
Avoiding junk in the git diff
.xcworkspace file there is a folder called
xcuserdata, containing files that are individual to each user who opens the project - that users breakpoints, saved search scopes, and other configurations.
xcshareddata folder contains files belonging to the whole project such as schemes and the
xcuserdata folder should be git-ignored, to avoid polluting the git tree and commit history, especially on projects with many contributors.
Alright, that's it for today!
Thank you to Bitrise for sponsoring this issue ❤️
I'm curious if you found any of the tips particularly interesting - let me know by replying to this email!