RLMArray

RLMArray is the container type in Realm used to define to-many relationships.

Unlike an NSArray, RLMArrays hold a single type, specified by the objectClassName property.
This is referred to in these docs as the “type” of the array.

When declaring an RLMArray property, the type must be marked as conforming to a
protocol by the same name as the objects it should contain (see the
RLM_ARRAY_TYPE macro). RLMArray properties can also use Objective‑C generics
if available. For example:

RLMArrays can be queried with the same predicates as RLMObject and RLMResults.

RLMArrays cannot be created directly. RLMArray properties on RLMObjects are
lazily created when accessed, or can be obtained by querying a Realm.

Key-Value Observing

RLMArray supports array key-value observing on RLMArray properties on RLMObject
subclasses, and the invalidated property on RLMArray instances themselves is
key-value observing compliant when the RLMArray is attached to a persisted
RLMObject (RLMArrays on standalone RLMObjects will never become invalidated).

Because RLMArrays are attached to the object which they are a property of, they
do not require using the mutable collection proxy objects from
-mutableArrayValueForKey: or KVC-compatible mutation methods on the containing
object. Instead, you can call the mutation methods on the RLMArray directly.

Return Value

The block will be asynchronously called with the initial array, and then
called again after each write transaction which changes the array or any
items contained in the array. You must retain the returned token for as long as
you want the block to continue to be called. To stop receiving updates, call
-stop on the token.

The error parameter will always be nil, and is present only for compatiblity
with the RLMResults version of this method, which can potentially fail.