接口 IRealmCollection<T>
可迭代、可排序的collection,是 Realm 返回的所有collection的基础。
继承成员
命名空间: Realms
程序集:Realm.dll
语法
public interface IRealmCollection<out T> : IReadOnlyList<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged
类型参数
名称 | 说明 |
---|---|
t | 集合中包含的值的类型。 |
属性
| 编辑本页 查看源代码IsFrozen
获取一个值,该值指示此collection是否已冻结。冻结collection是不可变的,可以从任何线程访问。从冻结collection中读取的对象也将被冻结。
声明
bool IsFrozen { get; }
属性值
类型 | 说明 |
---|---|
bool |
|
IsValid
获取一个值,该值指示此collection是否仍可有效使用,即Realm instance尚未关闭,并且如果它表示对多关系,则其对象尚未被删除。
声明
bool IsValid { get; }
属性值
类型 | 说明 |
---|---|
bool |
|
对象模式
获取ObjectSchema ,它描述collection中包含的IRealmObject 、 IEmbeddedObject或IAsymmetricObject实例的属性。如果collection包含原始值,则 ObjectSchema将为null
。
声明
ObjectSchema? ObjectSchema { get; }
属性值
类型 | 说明 |
---|---|
对象模式 | collection中包含的对象的模式。 |
Realm
获取此collection所属的Realm 实例。
声明
Realm Realm { get; }
属性值
类型 | 说明 |
---|---|
Realm | 此collection所属的Realm实例。 |
方法
| 编辑本页 查看源代码包含(对象?)
确定元素是否位于IRealmCollection<T>中。
声明
bool Contains(object? item)
参数
类型 | 名称 | 说明 |
---|---|---|
对象 | 列项 | 要在IRealmCollection<T>中查找的对象。 |
返回:
类型 | 说明 |
---|---|
bool | 如果在IRealmCollection<T>中找到项目,则为 true;否则为 false。 |
Freeze()
创建此collection的冻结快照。可以从任何线程读取和查询冻结的副本。
冻结collection还会创建一个具有自己生命周期的冻结Realm,但如果生成原始collection的活动Realm完全关闭(即 所有线程上的所有实例均已关闭),冻结的 Realm 和集合也将关闭。 可以正常查询冻结的collection,但尝试以任何方式对其进行更改或尝试注册侦听器都会抛出RealmFrozenException 。 注意:让大量不同版本的冻结对象保持活动状态可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置MaxNumberOfActiveVersions 。声明
IRealmCollection<out T> Freeze()
返回:
类型 | 说明 |
---|---|
IRealmCollection <T> | 此collection的冻结副本。 |
另请参阅
IndexOf(object?)
搜索指定对象,并返回整个IRealmCollection<T>中第一次出现的从零开始的索引。
声明
int IndexOf(object? item)
参数
类型 | 名称 | 说明 |
---|---|---|
对象 | 列项 | 要在IRealmCollection<T>中查找的对象。 |
返回:
类型 | 说明 |
---|---|
int | 如果找到,则为整个IRealmCollection<T>中首次出现的 item 的从零开始的索引;否则为 –1。 |
SubscribeForNotifications(NotificationCallbackDelegate<T>, KeyPathsCollection?)
注册一个回调,以便每次此IRealmCollection<T>更改时调用。
声明
IDisposable SubscribeForNotifications(NotificationCallbackDelegate<out T> callback, KeyPathsCollection? keyPathCollection = null)
参数
类型 | 名称 | 说明 |
---|---|---|
notificationCallbackDelegate <T> | callback | 使用更新后的IRealmCollection<T>调用的回调。 |
KeyPathsCollection | keyPathCollection | 可选的关键路径集合,指示哪些属性更改应引发通知。 |
返回:
类型 | 说明 |
---|---|
IDisposable | 订阅令牌。 只要您想接收变更通知,它就必须保持活动状态。 要停止接收通知,请调用Dispose() 。 |
备注
回调将与初始IRealmCollection<T>一起异步调用,然后在每次写事务(write transaction)后再次调用,这会更改collection中的任何对象或collection中的哪些对象。首次使用初始结果调用回调时, changes
参数将为null
。 对于此后的每次调用,它将包含有关在结果中添加、删除或修改了哪些行的信息。
当集合包含 Realm域时,可以传递一个可选的KeyPathsCollection ,它指示属性中的哪些更改应引发通知。 如果未传递KeyPathsCollection ,则将使用Full ,因此对所有顶级属性和4嵌套级别的更改都会引发通知。 有关如何构建KeyPathsCollection的更多信息,请参阅 KeyPathsCollection。
如果写事务(write transaction)未修改此IRealmCollection<T>中的任何对象,则根本不会调用回调。
调用该区块时, IRrealmCollection<T>对象将进行全面评估并保持最新状态,只要您不在同一线程上执行写事务(write transaction)或显式调用Refresh() ,访问该对象永远不会执行阻塞工作。
通知是通过标准事件循环传递的,因此当事件循环被其他活动阻止时无法传递。 当无法立即传递通知时,可以将多个通知合并为一个通知。 这可以包括初始collection的通知。