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 현재 스레드에서 쓰기 트랜잭션(write transaction)을 포함하여 항상 현재 스레드에서 Realm의 현재 상태를 반영합니다. 한 가지 예외는 for...in 빠른 열거를 사용하는 경우로, 이는 열거가 시작될 때 일부 객체가 삭제되거나 열거 중에 필터에 의해 제외되도록 수정되더라도 열거가 시작될 때 쿼리와 일치하는 객체를 항상 열거합니다.

RLMResults 처음 액세스할 때 느리게 평가됩니다. 쿼리 결과가 요청될 때만 쿼리를 실행합니다. 즉, 여러 개의 임시 RLMResults 를 연결하여 데이터를 정렬하고 필터링해도 중간 상태를 처리하는 추가 작업이 수행되지 않습니다.

결과가 평가되거나 알림 차단이 추가되면 결과가 최신 상태로 유지되며 가능하면 백그라운드 스레드에서 최신 상태로 유지하기 위한 작업이 수행됩니다.

RLMResults 직접 인스턴스화할 수 없습니다.

속성

  • 결과 컬렉션의 객체 수입니다.

    선언

    Objective-C

    @property (nonatomic, readonly) NSUInteger count;

    Swift

    var count: UInt { get }
  • 결과 컬렉션에 있는 객체의 유형입니다.

    선언

    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 }
  • 결과 collection에 포함된 객체의 클래스 이름입니다.

    type 이(가) RLMPropertyTypeObject가 아닌 경우 nil 이(가) 됩니다.

    선언

    Objective-C

    @property (nonatomic, copy, readonly, nullable) NSString *objectClassName;

    Swift

    var objectClassName: String? { get }
  • 이 결과 collection을 managed하는 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에서 객체를 찾을 수 없는 경우 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

    조건자 형식 문자열이며, 선택적으로 그 뒤에 다양한 수의 인수가 옵니다.

    반환 값

    객체의 인덱스이거나, 객체가 결과 collection에 없는 경우 NSNotFound 입니다.

  • 조건자와 일치하는 결과 collection의 첫 번째 객체의 인덱스를 반환합니다.

    선언

    Objective-C

    - (NSUInteger)indexOfObjectWithPredicate:(nonnull NSPredicate *)predicate;

    Swift

    func indexOfObject(with predicate: NSPredicate) -> UInt

    매개변수

    predicate

    객체를 필터링하는 데 사용할 조건자입니다.

    반환 값

    객체의 인덱스이거나, 객체가 결과 collection에 없는 경우 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이 변경될 때마다 호출될 블록을 등록합니다.

    블록은 초기 결과 컬렉션과 함께 비동기적으로 호출된 다음, 결과의 객체 또는 결과에 포함된 객체를 변경하는 각 쓰기 트랜잭션(write transaction) 후에 다시 호출됩니다.

    차단이 처음 호출되면 change 매개변수는 nil 가 됩니다. 그 이후의 각 호출에 대해 결과 컬렉션에서 추가, 제거 또는 수정된 행에 대한 정보가 포함됩니다. 쓰기 트랜잭션(write transaction)이 결과 collection의 객체를 수정하지 않은 경우 차단이 전혀 호출되지 않습니다. 변경 사항이 보고되는 방법과 UITableView 업데이트의 예에 대한 자세한 내용은 RLMCollectionChange 문서를 참조하세요.

    오류 매개변수는 이전 버전과의 호환성을 위해서만 존재하며 항상 nil 입니다.

    차단이 호출될 때 RLMResults 객체는 완전히 평가되고 최신 상태가 되며, 동일한 스레드에서 쓰기 트랜잭션(write transaction)을 수행하지 않거나 명시적으로 호출하지 않는 한 -[RLMRealm refresh] 1} 객체에 액세스합니다. 블로킹 작업을 수행하지 마세요.

    알림은 표준 이벤트 루프를 통해 전달되므로 다른 활동으로 이벤트 루프가 차단된 동안에는 전달할 수 없습니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다. 여기에는 초기 결과에 대한 알림이 포함될 수 있습니다. 예를 들어 다음 코드는 알림 차단을 추가한 직후 쓰기 트랜잭션(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이 변경될 때마다 호출될 블록을 등록합니다.

    블록은 초기 결과 컬렉션과 함께 비동기적으로 호출된 다음, 결과의 객체 또는 결과에 포함된 객체를 변경하는 각 쓰기 트랜잭션(write transaction) 후에 다시 호출됩니다.

    차단이 처음 호출되면 change 매개변수는 nil 가 됩니다. 그 이후의 각 호출에 대해 결과 컬렉션에서 추가, 제거 또는 수정된 행에 대한 정보가 포함됩니다. 쓰기 트랜잭션(write transaction)이 결과 collection의 객체를 수정하지 않은 경우 차단이 전혀 호출되지 않습니다. 변경 사항이 보고되는 방법과 UITableView 업데이트의 예에 대한 자세한 내용은 RLMCollectionChange 문서를 참조하세요.

    오류 매개변수는 이전 버전과의 호환성을 위해서만 존재하며 항상 nil 입니다.

    차단이 호출될 때 RLMResults 객체는 완전히 평가되고 최신 상태가 되며, 동일한 스레드에서 쓰기 트랜잭션(write transaction)을 수행하지 않거나 명시적으로 호출하지 않는 한 -[RLMRealm refresh] 1} 객체에 액세스합니다. 블로킹 작업을 수행하지 마세요.

    알림은 지정된 대기열에 전달됩니다. 대기열이 차단되어 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다.

    업데이트를 해당 블록에 계속 전송하려면 반환된 토큰을 오랫동안 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -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이 변경될 때마다 호출될 블록을 등록합니다.

    블록은 초기 결과 컬렉션과 함께 비동기적으로 호출된 다음, 결과의 객체 또는 결과에 포함된 객체를 변경하는 각 쓰기 트랜잭션(write transaction) 후에 다시 호출됩니다.

    차단이 처음 호출되면 change 매개변수는 nil 가 됩니다. 그 이후의 각 호출에 대해 결과 컬렉션에서 추가, 제거 또는 수정된 행에 대한 정보가 포함됩니다. 쓰기 트랜잭션(write transaction)이 결과 collection의 객체를 수정하지 않은 경우 차단이 전혀 호출되지 않습니다. 변경 사항이 보고되는 방법과 UITableView 업데이트의 예에 대한 자세한 내용은 RLMCollectionChange 문서를 참조하세요.

    오류 매개변수는 이전 버전과의 호환성을 위해서만 존재하며 항상 nil 입니다.

    차단이 호출될 때 RLMResults 객체는 완전히 평가되고 최신 상태가 되며, 동일한 스레드에서 쓰기 트랜잭션(write transaction)을 수행하지 않거나 명시적으로 호출하지 않는 한 -[RLMRealm refresh] 1} 객체에 액세스합니다. 블로킹 작업을 수행하지 마세요.

    알림은 지정된 대기열에 전달됩니다. 대기열이 차단되어 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다.

    업데이트를 해당 블록에 계속 전송하려면 반환된 토큰을 오랫동안 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -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이 변경될 때마다 호출될 블록을 등록합니다.

    블록은 초기 결과 컬렉션과 함께 비동기적으로 호출된 다음, 결과의 객체 또는 결과에 포함된 객체를 변경하는 각 쓰기 트랜잭션(write transaction) 후에 다시 호출됩니다.

    차단이 처음 호출되면 change 매개변수는 nil 가 됩니다. 그 이후의 각 호출에 대해 결과 컬렉션에서 추가, 제거 또는 수정된 행에 대한 정보가 포함됩니다. 쓰기 트랜잭션(write transaction)이 결과 collection의 객체를 수정하지 않은 경우 차단이 전혀 호출되지 않습니다. 변경 사항이 보고되는 방법과 UITableView 업데이트의 예에 대한 자세한 내용은 RLMCollectionChange 문서를 참조하세요.

    오류 매개변수는 이전 버전과의 호환성을 위해서만 존재하며 항상 nil 입니다.

    차단이 호출될 때 RLMResults 객체는 완전히 평가되고 최신 상태가 되며, 동일한 스레드에서 쓰기 트랜잭션(write transaction)을 수행하지 않거나 명시적으로 호출하지 않는 한 -[RLMRealm refresh] 1} 객체에 액세스합니다. 블로킹 작업을 수행하지 마세요.

    알림은 표준 이벤트 루프를 통해 전달되므로 다른 활동으로 이벤트 루프가 차단된 동안에는 전달할 수 없습니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다. 여기에는 초기 결과에 대한 알림이 포함될 수 있습니다. 예를 들어 다음 코드는 알림 차단을 추가한 직후 쓰기 트랜잭션(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)이 여러 개 열려 성능 병목 현상이 발생할 수 있습니다. 여러 개의 구독을 생성하기 위해 [RLMSyncSubscription update:queue:onComplete:] 을(를) 사용합니다.

    ~를 참조하세요.

    RLMWaitForSyncMode

    경고

    이 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)이 여러 개 열려 성능 병목 현상이 발생할 수 있습니다. 여러 개의 구독을 생성하기 위해 [RLMSyncSubscription update:queue:onComplete:] 을(를) 사용합니다.

    ~를 참조하세요.

    RLMWaitForSyncMode

    경고

    이 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)이 여러 개 열려 성능 병목 현상이 발생할 수 있습니다. 여러 개의 구독을 생성하기 위해 [RLMSyncSubscription update:queue:onComplete:] 을(를) 사용합니다.

    ~를 참조하세요.

    RLMWaitForSyncMode

    경고

    이 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)이 여러 개 열려 성능 병목 현상이 발생할 수 있습니다. 여러 개의 구독을 생성하기 위해 [RLMSyncSubscription update:queue:onComplete:] 을(를) 사용합니다.

    ~를 참조하세요.

    RLMWaitForSyncMode

    경고

    이 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의 로컬 구독 세트에 대한 구독 제거를 커밋한 후 반환됩니다. 이 메서드를 호출하면 객체가 영역에서 제거될 때까지 기다리지 않습니다.

    RLMResults에서 unsubscribe를 호출해도 RLMResults에서 로컬 필터가 제거되지는 않습니다. 구독 취소를 호출한 후에도 RLMRealm의 구독 세트에 다른 구독이 있을 수 있으므로 RLMResults에 여전히 객체가 포함될 수 있습니다.

    참고

    명명된 구독을 제거하려면 RLMResults에서 이전에 생성된 구독이 있어야 합니다. subscribe 을(를) 호출할 때 완료 블록에서 반환된 RLMResults 을(를) 사용하여 동일한 구독에서 구독을 취소할 수 있습니다.

    참고

    이 메서드는 구독을 생성하거나 업데이트하는 업데이트 차단 트랜잭션을 엽니다. 한 번에 여러 개의 구독을 생성하기 위해 이 메서드를 반복 사용 하지 않는 것이 좋습니다. 이로 인해 불필요한 쓰기 트랜잭션(write transaction)이 여러 개 열려 성능 병목 현상이 발생할 수 있습니다. 여러 개의 구독을 생성하기 위해 [RLMSyncSubscription update:queue:onComplete:] 을(를) 사용합니다.

    경고

    이 API는 현재 Preview 에 있으며 향후 변경될 수 있습니다.

    선언

    Objective-C

    - (void)unsubscribe;

    Swift

    func unsubscribe()

속성 값 집계

  • 결과 컬렉션이 나타내는 모든 객체 중 지정된 속성의 최소(최저) 값을 반환합니다.

    NSNumber *min = [results minOfProperty:@"age"];
    

    경고

    RLMObject, RLMArrayNSData 속성에서는 이 메서드를 사용할 수 없습니다.

    선언

    Objective-C

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

    Swift

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

    매개변수

    property

    The property whose minimum value is desired. int, float, doubleNSDate 유형의 속성만 지원됩니다.

    반환 값

    속성의 최소값이거나 결과가 비어 있는 경우 nil 입니다.

  • 결과 collection이 나타내는 모든 객체 중 지정된 속성의 최대값(가장 높은 값)을 반환합니다.

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

    경고

    RLMObject, RLMArrayNSData 속성에서는 이 메서드를 사용할 수 없습니다.

    선언

    Objective-C

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

    Swift

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

    매개변수

    property

    The property whose maximum value is desired. int, float, doubleNSDate 유형의 속성만 지원됩니다.

    반환 값

    속성의 최대값이거나 결과가 비어 있는 경우 nil 입니다.

  • 결과 collection이 나타내는 모든 객체에 대해 지정된 속성 값의 합계를 반환합니다.

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

    경고

    RLMObject, RLMArrayNSData 속성에서는 이 메서드를 사용할 수 없습니다.

    선언

    Objective-C

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

    Swift

    func sum(ofProperty property: String) -> NSNumber

    매개변수

    property

    값을 합산해야 하는 속성입니다. int, floatdouble 유형의 속성만 지원됩니다.

    반환 값

    지정된 속성의 합계입니다.

  • 결과 collection이 나타내는 객체에 대한 지정된 속성의 평균값을 반환합니다.

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

    경고

    RLMObject, RLMArrayNSData 속성에서는 이 메서드를 사용할 수 없습니다.

    선언

    Objective-C

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

    Swift

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

    매개변수

    property

    평균값을 계산해야 하는 속성입니다. int, floatdouble 유형의 속성만 지원됩니다.

    반환 값

    지정된 속성의 평균값이거나 결과가 비어 있는 경우 nil 입니다.

섹션별 결과

동결

  • 결과가 동결되었는지 여부를 나타냅니다.

    동결된 결과는 변경할 수 없으며 모든 스레드에서 액세스할 수 있습니다. 동결된 결과에서 읽은 객체도 동결됩니다.

    선언

    Objective-C

    @property (nonatomic, readonly, getter=isFrozen) BOOL frozen;

    Swift

    var isFrozen: Bool { get }
  • 이 결과의 동결(불변) 스냅샷을 반환합니다.

    동결 사본은 변경이 불가능한 collection으로 이 collection이 현재 포함하고 있는 것과 동일한 데이터를 포함하지만 포함 Realm에 기록할 때 업데이트되지 않습니다. 라이브 결과와 달리 동결된 결과는 모든 스레드에서 액세스할 수 있습니다.

    경고

    쓰기 트랜잭션(write transaction) 중에는 또는 포함하는 Realm이 읽기 전용일 때 이 메서드를 호출할 수 없습니다.

    경고

    Realm에서 쓰기 트랜잭션(write transaction)을 수행하는 동안 동결된 컬렉션을 오랫동안 유지하면 Realm 파일 크기가 커질 수 있습니다. 자세한 내용은 RLMRealmConfiguration.maximumNumberOfActiveVersions 를 참조하세요.

    선언

    Objective-C

    - (nonnull instancetype)freeze;

    Swift

    func freeze() -> Self
  • 이 동결된 collection의 라이브 버전을 반환합니다.

    이 메서드는 동일한 동결 컬렉션의 라이브 사본에 대한 참조를 확인합니다. 라이브 컬렉션에서 호출하면 자체를 반환합니다.

    선언

    Objective-C

    - (nonnull instancetype)thaw;

    Swift

    func thaw() -> Self

사용할 수 없는 메서드

  • 사용할 수 없음

    RLMResults를 직접 만들 수 없습니다.

    -[RLMResults init] RLMResults 을(를) 직접 만들 수 없기 때문에 사용할 수 없습니다. RLMResults 은(는) Realm을 쿼리하여 얻을 수 있습니다.

    선언

    Objective-C

    - (nonnull instancetype)init;
  • 사용할 수 없음

    RLMResults를 직접 만들 수 없습니다.

    +[RLMResults new] RLMResults 을(를) 직접 만들 수 없기 때문에 사용할 수 없습니다. RLMResults 은(는) Realm을 쿼리하여 얻을 수 있습니다.

    선언

    Objective-C

    + (nonnull instancetype)new;