Interface IRealmCollection<T>
Iterable, sortable collection of one kind of RealmObject resulting from All<T>() or from a LINQ query expression.
Inherited Members
Namespace: Realms
Assembly: Realm.dll
Syntax
public interface IRealmCollection<out T> : IReadOnlyList<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged
Type Parameters
Name | Description |
---|---|
T | Type of the RealmObject which is being returned. |
Properties
| Improve this Doc View SourceIsFrozen
Gets a value indicating whether this collection is frozen. Frozen collections are immutable and can be accessed from any thread. The objects read from a frozen collection will also be frozen.
Declaration
bool IsFrozen { get; }
Property Value
Type | Description |
---|---|
Boolean |
IsValid
Gets a value indicating whether this collection is still valid to use, i.e. the Realm instance hasn't been closed and, if it represents a to-many relationship, it's parent object hasn't been deleted.
Declaration
bool IsValid { get; }
Property Value
Type | Description |
---|---|
Boolean |
|
Realm
Gets the Realm instance this collection belongs to.
Declaration
Realm Realm { get; }
Property Value
Type | Description |
---|---|
Realm | The Realm instance this collection belongs to. |
Methods
| Improve this Doc View SourceContains(Object)
Determines whether an element is in the IRealmCollection<T>.
Declaration
bool Contains(object item)
Parameters
Type | Name | Description |
---|---|---|
Object | item | The object to locate in the IRealmCollection<T>. |
Returns
Type | Description |
---|---|
Boolean | true if item is found in the IRealmCollection<T>; otherwise, false. |
Freeze()
Creates a frozen snapshot of this collection. The frozen copy can be read and queried from any thread.
Freezing a collection also creates a frozen Realm which has its own lifecycle, but if the live Realm that spawned the original collection is fully closed (i.e. all instances across all threads are closed), the frozen Realm and collection will be closed as well.
Frozen collections can be queried as normal, but trying to mutate it in any way or attempting to register a listener will throw a RealmFrozenException.
Note: Keeping a large number of frozen objects with different versions alive can have a negative impact on the filesize of the Realm. In order to avoid such a situation it is possible to set MaxNumberOfActiveVersions.
Declaration
IRealmCollection<T> Freeze()
Returns
Type | Description |
---|---|
IRealmCollection<T> | A frozen copy of this collection. |
See Also
| Improve this Doc View SourceIndexOf(Object)
Searches for the specified object and returns the zero-based index of the first occurrence within the entire IRealmCollection<T>.
Declaration
int IndexOf(object item)
Parameters
Type | Name | Description |
---|---|---|
Object | item | The object to locate in the IRealmCollection<T>. |
Returns
Type | Description |
---|---|
Int32 | The zero-based index of the first occurrence of item within the entire IRealmCollection<T>, if found; otherwise, –1. |
SubscribeForNotifications(NotificationCallbackDelegate<T>)
Register a callback to be invoked each time this IRealmCollection<T> changes.
Declaration
IDisposable SubscribeForNotifications(NotificationCallbackDelegate<T> callback)
Parameters
Type | Name | Description |
---|---|---|
NotificationCallbackDelegate<T> | callback | The callback to be invoked with the updated IRealmCollection<T>. |
Returns
Type | Description |
---|---|
IDisposable | A subscription token. It must be kept alive for as long as you want to receive change notifications. To stop receiving notifications, call Dispose(). |
Remarks
The callback will be asynchronously invoked with the initial IRealmCollection<T>, and then
called again after each write transaction which changes either any of the objects in the collection, or
which objects are in the collection. The changes
parameter will
be null
the first time the callback is invoked with the initial results. For each call after that,
it will contain information about which rows in the results were added, removed or modified.
If a write transaction did not modify any objects in this IRealmCollection<T>, the callback is not invoked at all.
If an error occurs the callback will be invoked with null
for the sender
parameter and a non-null
error
.
Currently the only errors that can occur are when opening the Realm on the background worker thread.
At the time when the block is called, the IRealmCollection<T> object will be fully evaluated and up-to-date, and as long as you do not perform a write transaction on the same thread or explicitly call Refresh(), accessing it will never perform blocking work.
Notifications are delivered via the standard event loop, and so can't be delivered while the event loop is blocked by other activity. When notifications can't be delivered instantly, multiple notifications may be coalesced into a single notification. This can include the notification with the initial collection.