RLMResults
Objective-C
@interface RLMResults<RLMObjectType>
: NSObject <RLMCollection, NSFastEnumeration>
Swift
@_nonSendable(_assumed) class RLMResults<RLMObjectType> : NSObject, RLMCollection, NSFastEnumeration where RLMObjectType : AnyObject
RLMResults
是 Realm 中从对象查询返回的自动更新container类型。它以collection的形式表示查询的结果。
RLMResults
可以使用与RLMObject
和RLMArray
相同的谓词进行查询,并且可以链式查询以进一步筛选结果。
RLMResults
始终反映当前线程上的 Realm 的当前状态,包括在当前线程上的写事务(write transaction)期间。唯一的例外是使用for...in
快速枚举时,该枚举将始终枚举开始枚举时与查询匹配的对象,即使其中一些对象在枚举期间被删除或修改为被筛选器排除。
RLMResults
首次访问时延迟求值;它们仅在请求查询结果时才运行查询。 这意味着链接多个临时RLMResults
来对数据进行排序和筛选不会执行任何处理中间状态的额外工作。
评估结果或添加通知块后,系统会立即使结果保持最新,并尽可能在背景线程上完成保持最新的工作。
RLMResults
不能直接实例化。
-
结果collection中的对象数量。
声明
Objective-C
@property (nonatomic, readonly) NSUInteger count;
Swift
var count: UInt { get }
-
结果collection中的对象类型。
声明
Objective-C
@property (nonatomic, readonly) RLMPropertyType type;
Swift
var type: RLMPropertyType { get }
-
指示collection中的对象能否为
nil
。声明
Objective-C
@property (nonatomic, getter=isOptional) BOOL optional;
Swift
var isOptional: Bool { get set }
-
结果集合中包含的对象的类名称。
如果
type
不是 RLMPropertyTypeObject,则将为nil
。声明
Objective-C
@property (nonatomic, copy, readonly, nullable) NSString *objectClassName;
Swift
var objectClassName: String? { get }
-
指示结果collection是否不再有效。
如果对包含的
realm
调用invalidate
,则结果collection将变为无效。可以访问无效的结果collection,但始终为空。声明
Objective-C
@property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated;
Swift
var isInvalidated: Bool { get }
-
返回指定索引处的对象。
声明
Objective-C
- (nonnull RLMObjectType)objectAtIndex:(NSUInteger)index;
Swift
func object(at index: UInt) -> RLMObjectType
参数
index
要查找的索引。
返回值
collection中包含的类型的对象。
-
返回一个数组,其中包含结果中位于给定索引集指定的索引处的对象。 如果索引集包含超出数组范围的索引,则返回
nil
。声明
Objective-C
- (nullable NSArray<RLMObjectType> *)objectsAtIndexes: (nonnull NSIndexSet *)indexes;
Swift
func objects(at indexes: IndexSet) -> [RLMObjectType]?
参数
indexes
结果中要从中检索对象的索引。
返回值
指定索引处的对象。
-
返回结果collection中的第一个对象。
如果在空结果collection上调用,则返回
nil
。声明
Objective-C
- (nullable RLMObjectType)firstObject;
Swift
func firstObject() -> RLMObjectType?
返回值
collection中包含的类型的对象。
-
返回结果collection中的最后一个对象。
如果在空结果collection上调用,则返回
nil
。声明
Objective-C
- (nullable RLMObjectType)lastObject;
Swift
func lastObject() -> RLMObjectType?
返回值
collection中包含的类型的对象。
-
返回结果collection中对象的索引。
如果在结果collection中未找到该对象,则返回
NSNotFound
。声明
Objective-C
- (NSUInteger)indexOfObject:(nonnull RLMObjectType)object;
Swift
func index(of object: RLMObjectType) -> UInt
参数
object
一个对象(与从
objectClassName
选择器返回的类型相同)。 -
返回结果collection中与谓词匹配的第一个对象的索引。
声明
Objective-C
- (NSUInteger)indexOfObjectWhere:(nonnull NSString *)predicateFormat, ...;
参数
predicateFormat
谓词格式字符串,可以选择后跟可变数量的参数。
返回值
该对象的索引;如果在结果集合中未找到该对象,则为
NSNotFound
。 -
返回结果collection中与谓词匹配的第一个对象的索引。
声明
Objective-C
- (NSUInteger)indexOfObjectWithPredicate:(nonnull NSPredicate *)predicate;
Swift
func indexOfObject(with predicate: NSPredicate) -> UInt
参数
predicate
用于筛选对象的谓词。
返回值
该对象的索引;如果在结果集合中未找到该对象,则为
NSNotFound
。 -
返回结果collection中与给定谓词匹配的所有对象。
声明
Objective-C
- (nonnull RLMResults<RLMObjectType> *)objectsWhere: (nonnull NSString *)predicateFormat, ...;
参数
predicateFormat
谓词格式字符串,可以选择后跟可变数量的参数。
返回值
与给定谓词匹配的对象的
RLMResults
。 -
返回结果collection中与给定谓词匹配的所有对象。
声明
Objective-C
- (nonnull RLMResults<RLMObjectType> *)objectsWithPredicate: (nonnull NSPredicate *)predicate;
Swift
func objects(with predicate: NSPredicate) -> RLMResults<RLMObjectType>
参数
predicate
用于筛选对象的谓词。
返回值
与给定谓词匹配的对象的
RLMResults
。 -
从现有结果collection中返回已排序的
RLMResults
。声明
Objective-C
- (nonnull RLMResults<RLMObjectType> *) sortedResultsUsingKeyPath:(nonnull NSString *)keyPath ascending:(BOOL)ascending;
Swift
func sortedResults(usingKeyPath keyPath: String, ascending: Bool) -> RLMResults<RLMObjectType>
参数
keyPath
排序依据的键路径。
ascending
排序的方向。
返回值
按指定键路径排序的
RLMResults
。 -
从现有结果collection中返回已排序的
RLMResults
。声明
Objective-C
- (nonnull RLMResults<RLMObjectType> *)sortedResultsUsingDescriptors: (nonnull NSArray<RLMSortDescriptor *> *)properties;
Swift
func sortedResults(using properties: [RLMSortDescriptor]) -> RLMResults<RLMObjectType>
参数
properties
要排序的
RLMSortDescriptor
数组。返回值
按指定属性排序的
RLMResults
。 -
从现有结果collection中返回不同的
RLMResults
。声明
Objective-C
- (nonnull RLMResults<RLMObjectType> *)distinctResultsUsingKeyPaths: (nonnull NSArray<NSString *> *)keyPaths;
Swift
func distinctResults(usingKeyPaths keyPaths: [String]) -> RLMResults<RLMObjectType>
参数
keyPaths
使用的键路径会产生不同的结果
返回值
根据指定的键路径进行区分的
RLMResults
-
注册一个区块,以便在每次结果collection发生变化时调用。
该区块将与初始结果集合一起异步调用,然后在每次写入事务后再次调用,这会更改结果中的任何对象或结果中的哪些对象。
首次调用该区块时,
change
参数将为nil
。 对于此后的每次调用,它将包含有关在结果collection中添加、删除或修改了哪些行的信息。如果写事务(write transaction)未修改collection中的任何对象,则根本不会调用该区块。有关如何报告更改的信息以及更新UITableView
的示例,请参阅RLMCollectionChange
文档。存在错误参数只是为了向后兼容,并且将始终为
nil
。调用该区块时,
RLMResults
对象将进行全面求值且是最新的,只要您不在同一线程上执行写事务(write transaction)或显式调用-[RLMRealm refresh]
,访问该对象就会从不执行阻塞工作。通知是通过标准事件循环传递的,因此当事件循环被其他活动阻止时无法传递。当无法立即传递通知时,可以将多个通知合并为一个通知。 这可以包括带有初始结果的通知。 例如,以下代码在添加通知块后立即执行写事务(write transaction),因此没有机会首先传递初始通知。因此,初始通知将反映写事务(write transaction)后 Realm 的状态。
RLMResults<Dog *> *results = [Dog allObjects]; NSLog(@"dogs.count: %zu", dogs.count); // => 0 self.token = [results addNotificationBlock:^(RLMResults *dogs, RLMCollectionChange *changes, NSError *error) { // Only fired once for the example NSLog(@"dogs.count: %zu", dogs.count); // => 1 }]; [realm transactionWithBlock:^{ Dog *dog = [[Dog alloc] init]; dog.name = @"Rex"; [realm addObject:dog]; }]; // end of run loop execution context
只要您希望继续将更新发送到区块,就必须保留返回的令牌。 要停止接收更新,请对令牌调用
-invalidate
。警告
在写事务(write transaction)期间或当包含的 Realm 为只读时,无法调用此方法。
声明
Objective-C
- (nonnull RLMNotificationToken *)addNotificationBlock: (nonnull void (^)(RLMResults<RLMObjectType> *_Nullable, RLMCollectionChange *_Nullable, NSError *_Nullable))block;
Swift
func addNotificationBlock(_ block: @escaping (RLMResults<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void) -> RLMNotificationToken
参数
block
发生更改时要调用的区块。
返回值
只要您希望传递更新,就必须持有的令牌。
-
注册一个区块,以便在每次结果collection发生变化时调用。
该区块将与初始结果集合一起异步调用,然后在每次写入事务后再次调用,这会更改结果中的任何对象或结果中的哪些对象。
首次调用该区块时,
change
参数将为nil
。 对于此后的每次调用,它将包含有关在结果collection中添加、删除或修改了哪些行的信息。如果写事务(write transaction)未修改collection中的任何对象,则根本不会调用该区块。有关如何报告更改的信息以及更新UITableView
的示例,请参阅RLMCollectionChange
文档。存在错误参数只是为了向后兼容,并且将始终为
nil
。调用该区块时,
RLMResults
对象将进行全面求值且是最新的,只要您不在同一线程上执行写事务(write transaction)或显式调用-[RLMRealm refresh]
,访问该对象就会从不执行阻塞工作。通知将传递到给定队列。 如果队列阻塞且无法立即传递通知,则多个通知可能会合并为一个通知。
只要您希望继续将更新发送到区块,就必须保留返回的令牌。 要停止接收更新,请对令牌调用
-invalidate
。警告
当包含的 Realm 处于只读或冻结状态时,无法调用此方法。警告
该队列必须是串行队列。
声明
Objective-C
- (nonnull RLMNotificationToken *) addNotificationBlock:(nonnull void (^)(RLMResults<RLMObjectType> *_Nullable, RLMCollectionChange *_Nullable, NSError *_Nullable))block queue:(nullable dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping (RLMResults<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void, queue: dispatch_queue_t?) -> RLMNotificationToken
参数
block
发生更改时要调用的区块。
queue
要向其传递通知的串行队列。
返回值
只要您希望传递更新,就必须持有的令牌。
-
注册一个区块,以便在每次结果collection发生变化时调用。
该区块将与初始结果集合一起异步调用,然后在每次写入事务后再次调用,这会更改结果中的任何对象或结果中的哪些对象。
首次调用该区块时,
change
参数将为nil
。 对于此后的每次调用,它将包含有关在结果collection中添加、删除或修改了哪些行的信息。如果写事务(write transaction)未修改collection中的任何对象,则根本不会调用该区块。有关如何报告更改的信息以及更新UITableView
的示例,请参阅RLMCollectionChange
文档。存在错误参数只是为了向后兼容,并且将始终为
nil
。调用该区块时,
RLMResults
对象将进行全面求值且是最新的,只要您不在同一线程上执行写事务(write transaction)或显式调用-[RLMRealm refresh]
,访问该对象就会从不执行阻塞工作。通知将传递到给定队列。 如果队列阻塞且无法立即传递通知,则多个通知可能会合并为一个通知。
只要您希望继续将更新发送到区块,就必须保留返回的令牌。 要停止接收更新,请对令牌调用
-invalidate
。警告
当包含的 Realm 处于只读或冻结状态时,无法调用此方法。警告
该队列必须是串行队列。
声明
Objective-C
- (nonnull RLMNotificationToken *) addNotificationBlock:(nonnull void (^)(RLMResults<RLMObjectType> *_Nullable, RLMCollectionChange *_Nullable, NSError *_Nullable))block keyPaths:(nullable NSArray<NSString *> *)keyPaths queue:(nullable dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping (RLMResults<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void, keyPaths: [String]?, queue: dispatch_queue_t?) -> RLMNotificationToken
参数
block
发生更改时要调用的区块。
queue
要向其传递通知的串行队列。
keyPaths
这些键路径上发生的更改将调用该区块。 如果未给出键路径,则为每个属性键路径传递通知。
返回值
只要您希望传递更新,就必须持有的令牌。
-
注册一个区块,以便在每次结果collection发生变化时调用。
该区块将与初始结果集合一起异步调用,然后在每次写入事务后再次调用,这会更改结果中的任何对象或结果中的哪些对象。
首次调用该区块时,
change
参数将为nil
。 对于此后的每次调用,它将包含有关在结果collection中添加、删除或修改了哪些行的信息。如果写事务(write transaction)未修改collection中的任何对象,则根本不会调用该区块。有关如何报告更改的信息以及更新UITableView
的示例,请参阅RLMCollectionChange
文档。存在错误参数只是为了向后兼容,并且将始终为
nil
。调用该区块时,
RLMResults
对象将进行全面求值且是最新的,只要您不在同一线程上执行写事务(write transaction)或显式调用-[RLMRealm refresh]
,访问该对象就会从不执行阻塞工作。通知是通过标准事件循环传递的,因此当事件循环被其他活动阻止时无法传递。当无法立即传递通知时,可以将多个通知合并为一个通知。 这可以包括带有初始结果的通知。 例如,以下代码在添加通知块后立即执行写事务(write transaction),因此没有机会首先传递初始通知。因此,初始通知将反映写事务(write transaction)后 Realm 的状态。
只要您希望继续将更新发送到区块,就必须保留返回的令牌。 要停止接收更新,请对令牌调用
-invalidate
。警告
当包含的 Realm 处于只读或冻结状态时,无法调用此方法。警告
该队列必须是串行队列。
声明
Objective-C
- (nonnull RLMNotificationToken *) addNotificationBlock:(nonnull void (^)(RLMResults<RLMObjectType> *_Nullable, RLMCollectionChange *_Nullable, NSError *_Nullable))block keyPaths:(nullable NSArray<NSString *> *)keyPaths;
Swift
func addNotificationBlock(_ block: @escaping (RLMResults<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void, keyPaths: [String]?) -> RLMNotificationToken
参数
block
发生更改时要调用的区块。
keyPaths
这些键路径上发生的更改将调用该区块。 如果未给出键路径,则为每个属性键路径传递通知。
返回值
只要您希望传递更新,就必须持有的令牌。
-
创建与 RLMResults 的本地筛选器匹配的 RLMSyncSubscription。
将订阅提交到 Realm 的本地订阅集后,该方法将根据
RLMWaitForSyncMode
行为等待下载。未命名订阅
如果调用
subscribeWithCompletion:
时没有查询与未命名订阅匹配的名称,则不会创建其他订阅。如果在没有查询与命名订阅匹配的名称的情况下调用
subscribeWithCompletion:
,则会创建另一个未命名的订阅。命名订阅
如果调用
subscribeWithCompletion:
时使用的名称的查询与未命名的订阅匹配,则会创建另一个命名订阅。现有名称和查询
如果调用
subscribeWithCompletion:
时使用的名称已在不同查询中使用,则旧订阅将使用新查询进行更新。注意
此方法会打开一个用于创建或更新订阅的更新区块事务。 建议不要循环使用此方法来一次创建多个订阅。 这可能会打开多个不必要的写事务(write transaction),从而造成性能瓶颈。@see:
[RLMSyncSubscription update:queue:onComplete:]
以创建多个订阅。警告
此 API 目前处于
Preview
状态,将来可能会发生变化。声明
Objective-C
- (void)subscribeWithCompletionOnQueue:(dispatch_queue_t _Nullable)queue completion: (nonnull RLMResultsCompletionBlock)completion;
Swift
func subscribeWithCompletion(on queue: dispatch_queue_t?) async throws -> RLMResults<AnyObject>
参数
queue
完成调度的队列。
completion
订阅完成后调用的完成区块。 回调将根据
waitForSyncMode
中的值等待下载。 -
创建与 RLMResults 的本地筛选器匹配的 RLMSyncSubscription。
将订阅提交到 Realm 的本地订阅集后,该方法将根据
RLMWaitForSyncMode
行为等待下载。未命名订阅
如果调用
subscribeWithCompletion:
时没有查询与未命名订阅匹配的名称,则不会创建其他订阅。如果在没有查询与命名订阅匹配的名称的情况下调用
subscribeWithCompletion:
,则会创建另一个未命名的订阅。命名订阅
如果调用
subscribeWithCompletion:
时使用的名称的查询与未命名的订阅匹配,则会创建另一个命名订阅。现有名称和查询
如果调用
subscribeWithCompletion:
时使用的名称已在不同查询中使用,则旧订阅将使用新查询进行更新。注意
此方法会打开一个用于创建或更新订阅的更新区块事务。 建议不要循环使用此方法来一次创建多个订阅。 这可能会打开多个不必要的写事务(write transaction),从而造成性能瓶颈。@see:
[RLMSyncSubscription update:queue:onComplete:]
以创建多个订阅。警告
此 API 目前处于
Preview
状态,将来可能会发生变化。声明
Objective-C
- (void)subscribeWithName:(NSString *_Nullable)name onQueue:(dispatch_queue_t _Nullable)queue completion:(nonnull RLMResultsCompletionBlock)completion;
Swift
func subscribe(withName name: String?, on queue: dispatch_queue_t?) async throws -> RLMResults<AnyObject>
参数
name
用于标识订阅的名称。
queue
完成调度的队列。
completion
订阅完成后调用的完成区块。 回调将根据
waitForSyncMode
中的值等待下载。 -
创建与 RLMResults 的本地筛选器匹配的 RLMSyncSubscription。
将订阅提交到 Realm 的本地订阅集后,该方法将根据
RLMWaitForSyncMode
等待下载。未命名订阅
如果调用
subscribeWithCompletion:
时没有查询与未命名订阅匹配的名称,则不会创建其他订阅。如果在没有查询与命名订阅匹配的名称的情况下调用
subscribeWithCompletion:
,则会创建另一个未命名的订阅。命名订阅
如果调用
subscribeWithCompletion:
时使用的名称的查询与未命名的订阅匹配,则会创建另一个命名订阅。现有名称和查询
如果调用
subscribeWithCompletion:
时使用的名称已在不同查询中使用,则旧订阅将使用新查询进行更新。注意
此方法会打开一个用于创建或更新订阅的更新区块事务。 建议不要循环使用此方法来一次创建多个订阅。 这可能会打开多个不必要的写事务(write transaction),从而造成性能瓶颈。@see:
[RLMSyncSubscription update:queue:onComplete:]
以创建多个订阅。警告
此 API 目前处于
Preview
状态,将来可能会发生变化。声明
Objective-C
- (void)subscribeWithName:(NSString *_Nullable)name waitForSync:(RLMWaitForSyncMode)waitForSyncMode onQueue:(dispatch_queue_t _Nullable)queue completion:(nonnull RLMResultsCompletionBlock)completion;
Swift
@_unsafeInheritExecutor func subscribe(withName name: String?, waitForSync waitForSyncMode: WaitForSyncMode, on queue: dispatch_queue_t?) async throws -> RLMResults<AnyObject>
参数
name
用于标识订阅的名称。
waitForSyncMode
规定何时调用完成处理程序
queue
完成调度的队列。
completion
订阅完成后调用的完成区块。 回调将根据
waitForSyncMode
中的值等待下载。 -
创建与 RLMResults 的本地筛选器匹配的 RLMSyncSubscription。
将订阅提交到 Realm 的本地订阅集后,该方法将根据
RLMWaitForSyncMode
等待下载。未命名订阅
如果调用
subscribeWithCompletion:
时没有查询与未命名订阅匹配的名称,则不会创建其他订阅。如果在没有查询与命名订阅匹配的名称的情况下调用
subscribeWithCompletion:
,则会创建另一个未命名的订阅。命名订阅
如果调用
subscribeWithCompletion:
时使用的名称的查询与未命名的订阅匹配,则会创建另一个命名订阅。现有名称和查询
如果调用
subscribeWithCompletion:
时使用的名称已在不同查询中使用,则旧订阅将使用新查询进行更新。注意
此方法会打开一个用于创建或更新订阅的更新区块事务。 建议不要循环使用此方法来一次创建多个订阅。 这可能会打开多个不必要的写事务(write transaction),从而造成性能瓶颈。@see:
[RLMSyncSubscription update:queue:onComplete:]
以创建多个订阅。警告
此 API 目前处于
Preview
状态,将来可能会发生变化。声明
Objective-C
- (void)subscribeWithName:(NSString *_Nullable)name waitForSync:(RLMWaitForSyncMode)waitForSyncMode onQueue:(dispatch_queue_t _Nullable)queue timeout:(NSTimeInterval)timeout completion:(nonnull RLMResultsCompletionBlock)completion;
Swift
@_unsafeInheritExecutor func subscribe(withName name: String?, waitForSync waitForSyncMode: WaitForSyncMode, on queue: dispatch_queue_t?, timeout: TimeInterval) async throws -> RLMResults<AnyObject>
参数
name
用于标识订阅的名称。
waitForSyncMode
规定何时调用完成处理程序
queue
完成调度的队列。
timeout
通过完成处理程序结束等待下载的超时时间。 如果超过超时时间,完成处理程序将返回错误。
completion
订阅完成后调用的完成区块。 回调将根据
waitForSyncMode
中的值等待下载。 -
删除与 RLMResults 的本地筛选器匹配的 RLMSubscription。
该方法在将订阅删除提交到 Realm 的本地订阅集后返回。 调用此方法不会等待从 Realm 中删除对象。
对 RLMResults 调用取消订阅不会从 RLMResults 中删除本地筛选器。 调用取消订阅后,RLMResults 仍可能包含对象,因为 RLMRealm 的订阅集中可能存在其他订阅。
注意
要删除命名订阅,RLMResults 之前必须创建该订阅。 调用
subscribe
时完成区块中返回的RLMResults
可用于取消订阅同一订阅。注意
此方法会打开一个用于创建或更新订阅的更新区块事务。 建议不要循环使用此方法来一次创建多个订阅。 这可能会打开多个不必要的写事务(write transaction),从而造成性能瓶颈。@see:
[RLMSyncSubscription update:queue:onComplete:]
以创建多个订阅。警告
此 API 目前处于
Preview
状态,将来可能会发生变化。声明
Objective-C
- (void)unsubscribe;
Swift
func unsubscribe()
-
返回collection表示的所有对象中给定属性的最小值。
NSNumber *min = [results minOfProperty:@"age"];
声明
Objective-C
- (nullable id)minOfProperty:(nonnull NSString *)property;
Swift
func min(ofProperty property: String) -> Any?
参数
property
需要其最小值的属性。 仅支持类型为
int
、float
、double
和NSDate
的属性。返回值
该属性的最小值;如果“结果”为空,则为
nil
。 -
返回结果collection表示的所有对象中给定属性的最大值。
NSNumber *max = [results maxOfProperty:@"age"];
声明
Objective-C
- (nullable id)maxOfProperty:(nonnull NSString *)property;
Swift
func max(ofProperty property: String) -> Any?
参数
property
需要获取最大值的属性。 仅支持类型为
int
、float
、double
和NSDate
的属性。返回值
该属性的最大值,如果“结果”为空,则为
nil
。 -
返回collection表示的所有对象的给定属性的总和。
NSNumber *sum = [results sumOfProperty:@"age"];
声明
Objective-C
- (nonnull NSNumber *)sumOfProperty:(nonnull NSString *)property;
Swift
func sum(ofProperty property: String) -> NSNumber
参数
property
应对其值求和的属性。 仅支持类型为
int
、float
和double
的属性。返回值
给定属性的总和。
-
返回collection表示的对象的给定属性的平均值。
NSNumber *average = [results averageOfProperty:@"age"];
声明
Objective-C
- (nullable NSNumber *)averageOfProperty:(nonnull NSString *)property;
Swift
func average(ofProperty property: String) -> NSNumber?
参数
property
应计算其平均值的属性。 仅支持类型为
int
、float
和double
的属性。返回值
给定属性的平均值,如果结果为空,则为
nil
。
-
从给定属性键路径对此集合进行排序和分段,并以
RLMSectionedResults
的实例形式返回结果。声明
Objective-C
- (nonnull RLMSectionedResults *) sectionedResultsSortedUsingKeyPath:(nonnull NSString *)keyPath ascending:(BOOL)ascending keyBlock: (nonnull RLMSectionedResultsKeyBlock)keyBlock;
Swift
func sectionedResultsSorted(usingKeyPath keyPath: String, ascending: Bool, keyBlock: @escaping RLMSectionedResultsKeyBlock) -> RLMSectionedResults
参数
keyPath
排序所依据的属性键路径。
ascending
排序的方向。
keyBlock
对 Results collection中的每个元素调用的回调。此回调将返回集合中元素的部分键。
返回值
RLMectionedResults 的实例。
-
RLMSectionedResults
根据给定的排序描述符数组对此collection进行排序和分段,并以实例的实例形式返回结果。注意
主排序描述符必须负责确定节键。
声明
Objective-C
- (nonnull RLMSectionedResults *) sectionedResultsUsingSortDescriptors: (nonnull NSArray<RLMSortDescriptor *> *)sortDescriptors keyBlock:(nonnull RLMSectionedResultsKeyBlock) keyBlock;
Swift
func sectionedResults(using sortDescriptors: [RLMSortDescriptor], keyBlock: @escaping RLMSectionedResultsKeyBlock) -> RLMSectionedResults
参数
sortDescriptors
要排序的
RLMSortDescriptor
数组。keyBlock
对 Results collection中的每个元素调用的回调。此回调将返回集合中元素的部分键。
返回值
RLMectionedResults 的实例。
-
指示结果是否冻结。
冻结结果是不可变的,可以从任何线程访问。从冻结结果中读取的对象也将被冻结。
声明
Objective-C
@property (nonatomic, readonly, getter=isFrozen) BOOL frozen;
Swift
var isFrozen: Bool { get }
-
返回这些结果的冻结(不可变)快照。
冻结副本是一个不可变的collection,其中包含与该collection当前包含的数据相同的数据,但在写入包含的 Realm 时不会更新。与实时结果不同,可以从任何线程访问冻结结果。
警告
在写事务(write transaction)期间或当包含的 Realm 为只读时,无法调用此方法。警告
在 Realm 上执行写事务(write transaction)时长时间持有冻结的 collection 可能会导致 Realm 文件过大。有关更多信息,请参阅RLMRealmConfiguration.maximumNumberOfActiveVersions
。声明
Objective-C
- (nonnull instancetype)freeze;
Swift
func freeze() -> Self
-
返回此冻结collection的实时版本。
此方法解析对同一冻结collection的实时副本的引用。如果在实时collection上调用,则返回自身。
声明
Objective-C
- (nonnull instancetype)thaw;
Swift
func thaw() -> Self
-
不可用
无法直接创建 RLMResults
-[RLMResults init]
不可用,因为无法直接创建RLMResults
。 可以通过查询 Realm 来获取RLMResults
。声明
Objective-C
- (nonnull instancetype)init;
-
不可用
无法直接创建 RLMResults
+[RLMResults new]
不可用,因为无法直接创建RLMResults
。 可以通过查询 Realm 来获取RLMResults
。声明
Objective-C
+ (nonnull instancetype)new;