类 SubscriptionSet
表示Realm实例的活动订阅集的集合。 它与FlexibleSyncConfiguration结合使用,声明要与服务器同步的查询集。 您可以自由访问和读取订阅集,但必须在更新(操作)区块中对其进行更改。
implements
命名空间: Realm 。 Sync
程序集:Realm.dll
语法
public class SubscriptionSet : IReadOnlyList<Subscription>, IReadOnlyCollection<Subscription>, IEnumerable<Subscription>, IEnumerable
备注
对订阅集的任何更改都将保留在本地,并在下次应用程序启动时可用,即不必每次都订阅相同的查询。 更新订阅集可以在离线状态下完成,每当连接恢复时,只将最新的更新发送到服务器。
强烈建议您尽可能进行批处理更新,并预先请求应用程序所需的数据集。即使需要下载的数据很少,更新 Realm 的活动订阅集在服务器端也是一项成本高昂的操作。
属性
| 编辑本页 查看源代码数数
获取collection中的元素数量。
声明
public int Count { get; }
属性值
类型 | 说明 |
---|---|
int | collection中的元素数量。 |
错误
声明
public Exception? Error { get; }
属性值
类型 | 说明 |
---|---|
例外 | 该异常提供了有关服务器拒绝订阅集的更多详细信息。 |
this[int]
获取集合中指定索引处的订阅。
声明
public Subscription this[int index] { get; }
参数
类型 | 名称 | 说明 |
---|---|---|
int | 索引(index) | 要获取的元素的从零开始的索引。 |
属性值
类型 | 说明 |
---|---|
订阅 | 集合中指定索引处的订阅。 |
州
获取订阅集的状态。
声明
public SubscriptionSetState State { get; }
属性值
类型 | 说明 |
---|---|
订阅设置状态 | 订阅集的状态。 |
方法
| 编辑本页 查看源代码Add<T>(IQueryable<T>, SubscriptionOptions?)
将查询添加到活动订阅集。 该查询将通过 OR 声明与同一类型的任何现有查询连接。
声明
public Subscription Add<T>(IQueryable<T> query, SubscriptionOptions? options = null) where T : IRealmObject
参数
类型 | 名称 | 说明 |
---|---|---|
IQueryable <T> | 查询 | 将在服务器上匹配的查询。 |
SubscriptionOptions | 选项 | 控制将要执行的插入操作的名称和/或类型的订阅选项。 |
返回:
类型 | 说明 |
---|---|
订阅 | 表示指定查询的订阅。 |
类型参数
名称 | 说明 |
---|---|
t | 查询结果中的对象类型。 |
备注
添加已存在的查询属于无需操作,将返回现有的订阅。
查找(字符串)
按名称查找订阅。
声明
public Subscription? Find(string name)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 名称 | 订阅的名称。 |
返回:
类型 | 说明 |
---|---|
订阅 |
Find<T>(IQueryable<T>)
通过查询查找订阅。
声明
public Subscription? Find<T>(IQueryable<T> query) where T : IRealmObject
参数
类型 | 名称 | 说明 |
---|---|---|
IQueryable <T> | 查询 | 描述订阅的查询。 |
返回:
类型 | 说明 |
---|---|
订阅 |
类型参数
名称 | 说明 |
---|---|
t | 查询中对象的类型。 |
删除(订阅)
从此订阅集中删除提供的subscription
。
声明
public bool Remove(Subscription subscription)
参数
类型 | 名称 | 说明 |
---|---|---|
订阅 | 订阅 | 要删除的订阅。 |
返回:
类型 | 说明 |
---|---|
bool |
|
删除(字符串)
删除具有指定name
的订阅。
声明
public bool Remove(string name)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 名称 | 要删除的订阅的名称。 |
返回:
类型 | 说明 |
---|---|
bool |
|
RemoveAll(bool)
从此订阅集中删除所有订阅。
声明
public int RemoveAll(bool removeNamed = false)
参数
类型 | 名称 | 说明 |
---|---|---|
bool | removeNamed | 指示是否同时删除命名订阅的标志。 默认为 false。 |
返回:
类型 | 说明 |
---|---|
int | 集合中存在且已删除的订阅数量。 |
RemoveAll(string, bool)
删除提供的className
的所有订阅。
声明
public int RemoveAll(string className, bool removeNamed = false)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | 类名 | 要删除其订阅的类型的名称。 |
bool | removeNamed | 指示是否同时删除命名订阅的标志。 默认为 false。 |
返回:
类型 | 说明 |
---|---|
int | 此类型已存在且已删除的订阅数量。 |
RemoveAll<T>(bool)
删除指定类型的所有订阅。
声明
public int RemoveAll<T>(bool removeNamed = false) where T : IRealmObject
参数
类型 | 名称 | 说明 |
---|---|---|
bool | removeNamed | 指示是否同时删除命名订阅的标志。 默认为 false。 |
返回:
类型 | 说明 |
---|---|
int | 此类型已存在且已删除的订阅数量。 |
类型参数
名称 | 说明 |
---|---|
t | 应删除其订阅的对象类型。 |
Remove<T>(IQueryable<T>, bool)
删除具有指定query
的订阅。
声明
public int Remove<T>(IQueryable<T> query, bool removeNamed = false) where T : IRealmObject
参数
类型 | 名称 | 说明 |
---|---|---|
IQueryable <T> | 查询 | 应删除其匹配订阅的查询。 |
bool | removeNamed | 指示是否同时删除命名订阅的标志。 默认为 false。 |
返回:
类型 | 说明 |
---|---|
int |
|
类型参数
名称 | 说明 |
---|---|
t | 查询结果中的对象类型。 |
Update(Action)
更新订阅集,并在背景向服务器发送请求。
声明
public void Update(Action action)
参数
类型 | 名称 | 说明 |
---|---|---|
操作 | 操作 | 要执行的操作,添加或删除对此集的订阅。 |
备注
调用更新(操作)是更改订阅集的先决条件,例如通过调用Add<T>(IQueryable<T>, SubscriptionOptions?) 、 Remove(Subscription)或RemoveAll(bool) 。
调用此方法可能会更新此SubscriptionSet的内容,例如,如果在后台线程上调用了另一个Update(Action)或状态发生了变化。
如果要等待服务器确认并发回与更新的订阅匹配的数据,请使用WaitForSynchronizationAsync(CancellationToken?) 。
WaitForSynchronizationAsync(CancellationToken?)
等待服务器确认订阅集并返回匹配对象。
声明
public Task WaitForSynchronizationAsync(CancellationToken? cancellationToken = null)
参数
类型 | 名称 | 说明 |
---|---|---|
CancelationToken ? | cancelledToken | 可选取消令牌,可用于取消等待操作。 |
返回:
类型 | 说明 |
---|---|
任务 | 一个等待任务,其成功完成表示服务器已处理订阅更改并已发送与新订阅匹配的所有数据。 |
备注
如果订阅集的状态为完成,则返回的任务将立即完成。 如果State为Error ,则返回的任务将立即被拒绝并显示错误。
如果更改导致从 Realm 中删除对象,例如因为订阅已被删除,则这些对象将在返回的任务完成之前被删除。