Atlas Device SDK 已弃用。 有关详细信息,请参阅弃用页面。
Overview
Realm列表实现 IList<T> ,并包含零个或多个Realm类型的实例。与C# List一样, Realm集合也是同质的(集合中的所有对象都是同一类型)。
列表
Realm对象可以包含任何受支持数据类型的列表。您可以通过定义IList<T>类型的仅 getter属性来创建集合,其中 T 可以是任何数据类型(其他集合除外)。域对象列表表示两个Realm类型、列表中的包含类和类型之间的对多关系。
列表是可变的:在写事务中,您可以添加和删除列表上的元素。
列表和可空性
从数据库中删除对象会将其从其存在的所有列表中删除。 因此,对象列表永远不会包含已删除的对象。 但是,基元类型列表可以包含 null 值。 如果您不想在列表中允许 null 值,则可以在列表声明中使用不可为 null 的类型(例如,使用IList<double>而不是IList<double?> )。 如果您使用的是较旧的模式类型定义(您的类派生自RealmObject基类),或者未启用可空性,则在列表包含可空引用类型(例如string或byte[] 。
重要
不支持同步
仅限本地 Realm 支持可为 null(可选)值的集合,但Sync不支持。
有关详细信息,请参阅必需和可选属性。
关注变更
您可以使用列表上的INotifyCollectionChanged.CollectionChanged事件来监视对列表的更改,并使用INotifyPropertyChanged.PropertyChanged事件来监视对列表中特定属性的更改。
在以下代码示例中,我们有一个类,它有名为 StringList 的 IList<string> 属性。我们为 CollectionChanged 和 PropertyChanged 事件设置事件处理程序:
var list = container.StringList.AsRealmCollection(); list.CollectionChanged += (sender, e) => { Console.WriteLine($"List {sender} changed: {e.Action}"); }; list.PropertyChanged += (sender, e) => { Console.WriteLine($"Property changed on {sender}: {e.PropertyName}"); };