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 可以使用与RLMObjectRLMArray相同的谓词进行查询,并且可以链式查询以进一步筛选结果。

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。

    声明

    Objective-C

    @property (nonatomic, readonly) RLMRealm *_Nonnull realm;

    Swift

    var realm: RLMRealm { get }
  • 指示结果collection是否不再有效。

    如果对包含的realm调用invalidate ,则结果collection将变为无效。可以访问无效的结果collection,但始终为空。

    声明

    Objective-C

    @property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated;

    Swift

    var isInvalidated: Bool { get }

从 RLMResults 访问对象

  • 返回指定索引处的对象。

    声明

    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

    这些键路径上发生的更改将调用该区块。 如果未给出键路径,则为每个属性键路径传递通知。

    返回值

    只要您希望传递更新,就必须持有的令牌。

Flexible Sync

  • 创建与 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"];
    

    警告

    您不能在RLMObjectRLMArrayNSData属性上使用此方法。

    声明

    Objective-C

    - (nullable id)minOfProperty:(nonnull NSString *)property;

    Swift

    func min(ofProperty property: String) -> Any?

    参数

    property

    需要其最小值的属性。 仅支持类型为intfloatdoubleNSDate的属性。

    返回值

    该属性的最小值;如果“结果”为空,则为nil

  • 返回结果collection表示的所有对象中给定属性的最大值。

    NSNumber *max = [results maxOfProperty:@"age"];
    

    警告

    您不能在RLMObjectRLMArrayNSData属性上使用此方法。

    声明

    Objective-C

    - (nullable id)maxOfProperty:(nonnull NSString *)property;

    Swift

    func max(ofProperty property: String) -> Any?

    参数

    property

    需要获取最大值的属性。 仅支持类型为intfloatdoubleNSDate的属性。

    返回值

    该属性的最大值,如果“结果”为空,则为nil

  • 返回collection表示的所有对象的给定属性的总和。

    NSNumber *sum = [results sumOfProperty:@"age"];
    

    警告

    您不能在RLMObjectRLMArrayNSData属性上使用此方法。

    声明

    Objective-C

    - (nonnull NSNumber *)sumOfProperty:(nonnull NSString *)property;

    Swift

    func sum(ofProperty property: String) -> NSNumber

    参数

    property

    应对其值求和的属性。 仅支持类型为intfloatdouble的属性。

    返回值

    给定属性的总和。

  • 返回collection表示的对象的给定属性的平均值。

    NSNumber *average = [results averageOfProperty:@"age"];
    

    警告

    您不能在RLMObjectRLMArrayNSData属性上使用此方法。

    声明

    Objective-C

    - (nullable NSNumber *)averageOfProperty:(nonnull NSString *)property;

    Swift

    func average(ofProperty property: String) -> NSNumber?

    参数

    property

    应计算其平均值的属性。 仅支持类型为intfloatdouble的属性。

    返回值

    给定属性的平均值,如果结果为空,则为nil

分段结果

冻结

  • 指示结果是否冻结。

    冻结结果是不可变的,可以从任何线程访问。从冻结结果中读取的对象也将被冻结。

    声明

    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;