Adding custom attribute to NSAttributedString on iOS

NSAttributedString is used for displaying rich text on Apple platforms. There are many attributes available for styling the text. Let's see how to add new attribute and how to draw it in UITextView. Drawing custom attribute Defining a new attribute is just a matter of extending NSAttributedString.Key and defining a new static variable. Difficult part …

Persistent reusable container for item collections in Swift

Let's build a container where we can store collections of items conforming to a protocol. All the collections are identified by a case in enum. For making the container reusable, we'll use protocols as requirements on keys and items in collections. Moreover, the container should be archivable and unarchivable. Creating a reusable container Container's implementation …

Property wrapper for validating email using NSDataDetector

Property wrappers allow property declaration to state what kind of property wrapper is used for implementing the property. We can use it for implementing transformations on properties like validating if string is email or not. This is what we will do: creating a property wrapper for email properties and validating emails using NSDataDetector. If value …

Key-value observing without NSObject and dynamic modifier in Swift

When writing code in Swift it is often needed to observe changes in other objects. We can use Apple's key-value observation but it has some implications: requires to use NSObject and dynamic dispatch through Objective-C runtime. This time, let's build a simple key-value observation in Swift what does not require to use NSObject at all. …