A nice rule of thumb when deciding what kind of object type to use in Swift is: Value types, that is a struct or an enum, are things, while reference types or classes, do things.
Pasan Premaratne


Non-ascii characters in Bundle ID

This is a note-to-self: Don’t use Non-ascii characters in Bundle ID. I’ve made this mistake twice now causing all kinds of extra time fixing the problem.

Bundle ID should not be localized according to CFBundleIdentifier Documentation:

CFBundleIdentifier (String - iOS, macOS) uniquely identifies the bundle. Each distinct app or bundle on the system must have a unique bundle ID. The system uses this string to identify your app in many ways. For example, the preferences system uses this string to identify the app for which a given preference applies; Launch Services uses the bundle identifier to locate an app capable of opening a particular file, using the first app it finds with the given identifier; in iOS, the bundle identifier is used in validating the app’s signature.

The bundle ID string must be a uniform type identifier (UTI) that contains only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters. The string should also be in reverse-DNS format. For example, if your company’s domain is Ajax.com and you create an app named Hello, you could assign the string com.Ajax.Hello as your app’s bundle identifier.