RLM 섹션

Objective-C

@interface RLMSection<RLMKeyType : id <RLMValue>, RLMObjectType>
    : NSObject <RLMSectionedResult>

Swift

@_nonSendable(_assumed) class RLMSection<RLMKeyType, RLMObjectType> : NSObject, RLMSectionedResult where RLMKeyType : RLMValue, RLMObjectType : AnyObject

RLM섹션에는 지정된 섹션 키에 속한 객체가 포함되어 있습니다.

  • key

    이 섹션의 키를 나타내는 값입니다.

    선언

    Objective-C

    @property (nonatomic, readonly) RLMKeyType _Nonnull key;

    Swift

    var key: RLMKeyType { get }
  • 섹션에 있는 객체의 개수입니다.

    선언

    Objective-C

    @property (nonatomic, readonly) NSUInteger count;

    Swift

    var count: UInt { get }
  • 섹션의 지정된 인덱스 에 대한 객체 를 반환합니다.

    선언

    Objective-C

    - (nonnull RLMObjectType)objectAtIndexedSubscript:(NSUInteger)index;

    Swift

    subscript(index: UInt) -> RLMObjectType { get }
  • 섹션의 지정된 인덱스 에 대한 객체 를 반환합니다.

    선언

    Objective-C

    - (nonnull RLMObjectType)objectAtIndex:(NSUInteger)index;

    Swift

    func object(at index: UInt) -> RLMObjectType

동결

  • 이 섹션의 고정된(불변) 스냅샷 을 반환합니다.

    동결된 사본은 변경할 수 없는 섹션으로, 이 섹션에 현재 포함된 것과 동일한 데이터를 포함하지만 포함하는 Realm에 쓰기가 수행될 때 업데이트되지 않습니다. 라이브 배열과 달리 동결 컬렉션은 모든 스레드에서 액세스할 수 있습니다.

    경고

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

    경고

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

    선언

    Objective-C

    - (nonnull instancetype)freeze;

    Swift

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

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

    선언

    Objective-C

    - (nonnull instancetype)thaw;

    Swift

    func thaw() -> Self
  • 기본 섹션이 고정되었는지 여부를 나타냅니다.

    동결된 섹션은 변경할 수 없으며 모든 스레드에서 액세스할 수 있습니다.

    선언

    Objective-C

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

    Swift

    var isFrozen: Bool { get }

섹션 알림

  • 섹션이 변경될 때마다 호출될 차단 을 등록합니다.

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

    블록이 처음 호출될 때 change 매개변수는 nil 이(가) 됩니다. 그 이후의 각 호출에 대해 섹션의 어떤 행이 추가, 제거 또는 수정되었는지에 대한 정보가 포함됩니다. 쓰기 트랜잭션(write transaction)이 섹션의 객체를 수정하지 않은 경우 블록은 전혀 호출되지 않습니다. 변경 사항이 보고되는 방법과 UITableView 업데이트의 예에 대한 자세한 내용은 RLMSectionedResultsChange 설명서를 참조하세요.

    차단 이 호출되면 RLMSection 객체 가 완전히 평가되고 최신 상태가 됩니다.

    알림은 표준 이벤트 루프를 통해 전달되므로 다른 활동으로 이벤트 루프가 차단된 동안에는 전달할 수 없습니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다. 여기에는 초기 결과에 대한 알림이 포함될 수 있습니다. 예를 들어 다음 코드는 알림 차단을 추가한 직후 쓰기 트랜잭션(write transaction)을 수행하므로 초기 알림이 먼저 전달될 기회가 없습니다. 결과적으로 초기 알림에는 쓰기 트랜잭션(write transaction) 후 Realm의 상태가 반영됩니다.

    RLM 결과 *results = [Dog allObjects]; RLM 섹션 결과 *sectionedResults = [resultssectionedResultsUsingKeyPath:@"age"ascending:예]; RLM 섹션 *section = SectionedResults[0] // ' 5' 세 개가 있는 섹션이 이미 존재합니다.

    self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { // 예시 의 경우 한 번만 실행 NSLog(@"section.count: %zu",section.count); // => 2 }]; [영역 transactionWithBlock:^{ Dog *dog = [[Dog alloc] init]; dog.name = @"Rex"; dog.age = 5; [영역 addObject:dog]; }]; // 실행 루프 실행 컨텍스트의 끝

    업데이트를 해당 블록에 계속 전송하려면 반환된 토큰을 오랫동안 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -invalidate 을 호출합니다.

    경고

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

    경고

    대기열은 직렬 대기열이어야 합니다.

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)addNotificationBlock:
        (nonnull void (^)(RLMSection<RLMKeyType, RLMObjectType> *_Nonnull,
                          RLMSectionedResultsChange *_Nonnull))block;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSection<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void) -> RLMNotificationToken

    매개변수

    block

    변경이 발생할 때마다 호출되는 차단입니다.

    반환 값

    업데이트가 전달되기를 원하는 기간 동안 보유해야 하는 토큰입니다.

  • 섹션이 변경될 때마다 호출될 차단 을 등록합니다.

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

    블록이 처음 호출될 때 change 매개변수는 nil 이(가) 됩니다. 그 이후의 각 호출에 대해 섹션의 어떤 행이 추가, 제거 또는 수정되었는지에 대한 정보가 포함됩니다. 쓰기 트랜잭션(write transaction)이 섹션의 객체를 수정하지 않은 경우 블록은 전혀 호출되지 않습니다. 변경 사항이 보고되는 방법과 UITableView 업데이트의 예에 대한 자세한 내용은 RLMSectionedResultsChange 설명서를 참조하세요.

    차단 이 호출되면 RLMSection 객체 가 완전히 평가되고 최신 상태가 됩니다.

    알림은 표준 이벤트 루프를 통해 전달되므로 다른 활동으로 이벤트 루프가 차단된 동안에는 전달할 수 없습니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다. 여기에는 초기 결과에 대한 알림이 포함될 수 있습니다. 예를 들어 다음 코드는 알림 차단을 추가한 직후 쓰기 트랜잭션(write transaction)을 수행하므로 초기 알림이 먼저 전달될 기회가 없습니다. 결과적으로 초기 알림에는 쓰기 트랜잭션(write transaction) 후 Realm의 상태가 반영됩니다.

    RLM 결과 *results = [Dog allObjects]; RLM 섹션 결과 *sectionedResults = [resultssectionedResultsUsingKeyPath:@"age"ascending:예]; RLM 섹션 *section = SectionedResults[0] // ' 5' 세 개가 있는 섹션이 이미 존재합니다.

    self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { // 예시 의 경우 한 번만 실행 NSLog(@"section.count: %zu",section.count); // => 2 }]; [영역 transactionWithBlock:^{ Dog *dog = [[Dog alloc] init]; dog.name = @"Rex"; dog.age = 5; [영역 addObject:dog]; }]; // 실행 루프 실행 컨텍스트의 끝

    업데이트를 해당 블록에 계속 전송하려면 반환된 토큰을 오랫동안 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -invalidate 을 호출합니다.

    경고

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

    경고

    대기열은 직렬 대기열이어야 합니다.

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:
            (nonnull void (^)(RLMSection<RLMKeyType, RLMObjectType> *_Nonnull,
                              RLMSectionedResultsChange *_Nonnull))block
                       queue:(nonnull dispatch_queue_t)queue;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSection<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void, queue: dispatch_queue_t) -> RLMNotificationToken

    매개변수

    block

    변경이 발생할 때마다 호출되는 차단입니다.

    queue

    알림을 전달할 직렬 대기열입니다.

    반환 값

    업데이트가 전달되기를 원하는 기간 동안 보유해야 하는 토큰입니다.

  • 섹션이 변경될 때마다 호출될 차단 을 등록합니다.

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

    블록이 처음 호출될 때 change 매개변수는 nil 이(가) 됩니다. 그 이후의 각 호출에 대해 섹션의 어떤 행이 추가, 제거 또는 수정되었는지에 대한 정보가 포함됩니다. 쓰기 트랜잭션(write transaction)이 섹션의 객체를 수정하지 않은 경우 블록은 전혀 호출되지 않습니다. 변경 사항이 보고되는 방법과 UITableView 업데이트의 예에 대한 자세한 내용은 RLMSectionedResultsChange 설명서를 참조하세요.

    차단 이 호출되면 RLMSection 객체 가 완전히 평가되고 최신 상태가 됩니다.

    알림은 표준 이벤트 루프를 통해 전달되므로 다른 활동으로 이벤트 루프가 차단된 동안에는 전달할 수 없습니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다. 여기에는 초기 결과에 대한 알림이 포함될 수 있습니다. 예를 들어 다음 코드는 알림 차단을 추가한 직후 쓰기 트랜잭션(write transaction)을 수행하므로 초기 알림이 먼저 전달될 기회가 없습니다. 결과적으로 초기 알림에는 쓰기 트랜잭션(write transaction) 후 Realm의 상태가 반영됩니다.

    RLM 결과 *results = [Dog allObjects]; RLM 섹션 결과 *sectionedResults = [resultssectionedResultsUsingKeyPath:@"age"ascending:예]; RLM 섹션 *section = SectionedResults[0] // ' 5' 세 개가 있는 섹션이 이미 존재합니다.

    self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { // 예시 의 경우 한 번만 실행 NSLog(@"section.count: %zu",section.count); // => 2 }]; [영역 transactionWithBlock:^{ Dog *dog = [[Dog alloc] init]; dog.name = @"Rex"; dog.age = 5; [영역 addObject:dog]; }]; // 실행 루프 실행 컨텍스트의 끝

    업데이트를 해당 블록에 계속 전송하려면 반환된 토큰을 오랫동안 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -invalidate 을 호출합니다.

    경고

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

    경고

    대기열은 직렬 대기열이어야 합니다.

    참고

    키 경로로 필터링하면 다음 시나리오에서 알림이 실행됩니다.

    • 컬렉션의 객체가 필터링된 속성에서 수정되었습니다.
    • 섹션 키 경로 속성 에서 객체 가 수정되었으며 해당 수정 결과로 인해 섹션에서의 위치가 변경되었거나 객체 를 다른 섹션으로 이동해야 할 수 있습니다.
    • 관찰된 동일한 유형의 객체 가 Realm 에 삽입되거나 삭제되었습니다.

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:
            (nonnull void (^)(RLMSection<RLMKeyType, RLMObjectType> *_Nonnull,
                              RLMSectionedResultsChange *_Nonnull))block
                    keyPaths:(nonnull NSArray<NSString *> *)keyPaths;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSection<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void, keyPaths: [String]) -> RLMNotificationToken

    매개변수

    block

    변경이 발생할 때마다 호출되는 차단입니다.

    keyPaths

    이러한 키 경로에서 발생하는 변경에 대해 차단이 호출됩니다. 키 경로가 제공되지 않으면 모든 속성 키 경로에 대해 알림이 전달됩니다.

    반환 값

    업데이트가 전달되기를 원하는 기간 동안 보유해야 하는 토큰입니다.

  • 섹션이 변경될 때마다 호출될 차단 을 등록합니다.

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

    블록이 처음 호출될 때 change 매개변수는 nil 이(가) 됩니다. 그 이후의 각 호출에 대해 섹션의 어떤 행이 추가, 제거 또는 수정되었는지에 대한 정보가 포함됩니다. 쓰기 트랜잭션(write transaction)이 섹션의 객체를 수정하지 않은 경우 블록은 전혀 호출되지 않습니다. 변경 사항이 보고되는 방법과 UITableView 업데이트의 예에 대한 자세한 내용은 RLMSectionedResultsChange 설명서를 참조하세요.

    차단 이 호출되면 RLMSection 객체 가 완전히 평가되고 최신 상태가 됩니다.

    알림은 표준 이벤트 루프를 통해 전달되므로 다른 활동으로 이벤트 루프가 차단된 동안에는 전달할 수 없습니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다. 여기에는 초기 결과에 대한 알림이 포함될 수 있습니다. 예를 들어 다음 코드는 알림 차단을 추가한 직후 쓰기 트랜잭션(write transaction)을 수행하므로 초기 알림이 먼저 전달될 기회가 없습니다. 결과적으로 초기 알림에는 쓰기 트랜잭션(write transaction) 후 Realm의 상태가 반영됩니다.

    RLM 결과 *results = [Dog allObjects]; RLM 섹션 결과 *sectionedResults = [resultssectionedResultsUsingKeyPath:@"age"ascending:예]; RLM 섹션 *section = SectionedResults[0] // ' 5' 세 개가 있는 섹션이 이미 존재합니다.

    self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { // 예시 의 경우 한 번만 실행 NSLog(@"section.count: %zu",section.count); // => 2 }]; [영역 transactionWithBlock:^{ Dog *dog = [[Dog alloc] init]; dog.name = @"Rex"; dog.age = 5; [영역 addObject:dog]; }]; // 실행 루프 실행 컨텍스트의 끝

    업데이트를 해당 블록에 계속 전송하려면 반환된 토큰을 오랫동안 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -invalidate 을 호출합니다.

    경고

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

    경고

    대기열은 직렬 대기열이어야 합니다.

    참고

    키 경로로 필터링하면 다음 시나리오에서 알림이 실행됩니다.

    • 컬렉션의 객체가 필터링된 속성에서 수정되었습니다.
    • 섹션 키 경로 속성 에서 객체 가 수정되었으며 해당 수정 결과로 인해 섹션에서의 위치가 변경되었거나 객체 를 다른 섹션으로 이동해야 할 수 있습니다.
    • 관찰된 동일한 유형의 객체 가 Realm 에 삽입되거나 삭제되었습니다.

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:
            (nonnull void (^)(RLMSection<RLMKeyType, RLMObjectType> *_Nonnull,
                              RLMSectionedResultsChange *_Nonnull))block
                    keyPaths:(nullable NSArray<NSString *> *)keyPaths
                       queue:(nullable dispatch_queue_t)queue;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSection<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void, keyPaths: [String]?, queue: dispatch_queue_t?) -> RLMNotificationToken

    매개변수

    block

    변경이 발생할 때마다 호출되는 차단입니다.

    keyPaths

    이러한 키 경로에서 발생하는 변경에 대해 차단이 호출됩니다. 키 경로가 제공되지 않으면 모든 속성 키 경로에 대해 알림이 전달됩니다.

    queue

    알림을 전달할 직렬 대기열입니다.

    반환 값

    업데이트가 전달되기를 원하는 기간 동안 보유해야 하는 토큰입니다.