RLMSet

Objective-C

@interface RLMSet<RLMObjectType> : NSObject <RLMCollection>

스위프트

@_nonSendable(_assumed) class RLMSet<RLMObjectType> : NSObject, RLMCollection where RLMObjectType : AnyObject

고유 객체를 저장하는 데 사용되는 collection 데이터 유형입니다.

참고

RLMSet 기본 및 RLMObject 유형 저장을 지원합니다. RLMSet 은(는) 임베디드 Realm 객체 저장을 지원하지 않습니다.

속성

  • 세트에 있는 객체 수입니다.

    선언

    Objective-C

    @property (nonatomic, readonly) NSUInteger count;

    스위프트

    var count: UInt { get }
  • 세트에 있는 객체의 유형입니다.

    선언

    Objective-C

    @property (nonatomic, readonly) RLMPropertyType type;

    스위프트

    var type: RLMPropertyType { get }
  • collection의 객체가 nil 일 수 있는지 여부를 나타냅니다.

    선언

    Objective-C

    @property (nonatomic, readonly, getter=isOptional) BOOL optional;

    스위프트

    var isOptional: Bool { get }
  • RLMSet의 객체를 NSArray 값으로 사용합니다.

    선언

    Objective-C

    @property (nonatomic, readonly) NSArray<RLMObjectType> *_Nonnull allObjects;

    스위프트

    var allObjects: [RLMObjectType] { get }
  • 세트에 포함된 객체의 클래스 이름입니다.

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

    선언

    Objective-C

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

    스위프트

    var objectClassName: String? { get }
  • 세트를 managed하는 Realm입니다. 관리되지 않는 집합에 대해 nil 을 반환합니다.

    선언

    Objective-C

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

    스위프트

    var realm: RLMRealm? { get }
  • 세트에 더 이상 액세스할 수 없는지 여부를 나타냅니다.

    선언

    Objective-C

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

    스위프트

    var isInvalidated: Bool { get }
  • 세트가 동결되었는지 여부를 나타냅니다.

    동결 세트는 변경할 수 없으며 모든 스레드에서 액세스할 수 있습니다. 동결 세트는 managed 라이브 세트에서 -freeze 을(를) 호출하여 생성됩니다. 관리되지 않는 세트는 동결되지 않습니다.

    선언

    Objective-C

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

    스위프트

    var isFrozen: Bool { get }

세트의 객체 추가, 제거 및 바꾸기

  • 아직 존재하지 않는 경우 객체를 세트에 추가합니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    Objective-C

    - (void)addObject:(nonnull RLMObjectType)object;

    스위프트

    func add(_ object: RLMObjectType)

    매개변수

    object

    세트에 포함된 유형의 객체입니다.

  • 고유 객체의 배열을 세트에 추가합니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    Objective-C

    - (void)addObjects:(nonnull id<NSFastEnumeration>)objects;

    스위프트

    func addObjects(_ objects: any NSFastEnumeration)

    매개변수

    objects

    열거 가능한 객체(예: 세트와 동일한 클래스의 객체를 포함하는 NSArray, NSSet 또는 RLMResults )입니다.

  • 세트에서 주어진 객체를 제거합니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    Objective-C

    - (void)removeObject:(nonnull RLMObjectType)object;

    스위프트

    func remove(_ object: RLMObjectType)

    매개변수

    object

    제거하려는 세트의 객체입니다.

  • 세트에서 모든 객체를 제거합니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    Objective-C

    - (void)removeAllObjects;

    스위프트

    func removeAllObjects()
  • 수신 집합을 비운 다음 지정된 다른 집합에 포함된 각 객체를 추가합니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    Objective-C

    - (void)setSet:(nonnull RLMSet<RLMObjectType> *)set;

    스위프트

    func setSet(_ set: RLMSet<RLMObjectType>)

    매개변수

    set

    수신 세트의 콘텐츠를 대체하는 RLMSet의 멤버입니다.

  • 지정된 다른 집합의 구성원이 아닌 각 객체를 수신 집합에서 제거합니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    Objective-C

    - (void)intersectSet:(nonnull RLMSet<RLMObjectType> *)set;

    스위프트

    func intersect(_ set: RLMSet<RLMObjectType>)

    매개변수

    set

    교차를 수행할 RLMSet입니다.

  • 지정된 다른 세트의 각 객체를 수신 세트(있는 경우)에서 제거합니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    Objective-C

    - (void)minusSet:(nonnull RLMSet<RLMObjectType> *)set;

    스위프트

    func minus(_ set: RLMSet<RLMObjectType>)

    매개변수

    set

    수신 세트에서 제거할 객체 세트입니다.

  • 지정된 다른 세트의 각 객체가 없는 경우 수신 세트에 추가합니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    Objective-C

    - (void)unionSet:(nonnull RLMSet<RLMObjectType> *)set;

    스위프트

    func union(_ set: RLMSet<RLMObjectType>)

    매개변수

    set

    수신 세트에 추가할 객체 세트입니다.

세트 쿼리하기

  • 수신 집합의 객체 하나 이상이 지정된 다른 집합에도 있는지 여부를 나타내는 부울 값을 반환합니다.

    선언

    Objective-C

    - (BOOL)intersectsSet:(nonnull RLMSet<RLMObjectType> *)set;

    스위프트

    func intersects(_ set: RLMSet<RLMObjectType>) -> Bool

    매개변수

    set

    수신 세트를 비교할 RLMSet입니다.

    반환 값

    수신 세트의 객체 중 하나 이상이 otherSet에도 있으면 '예', 그렇지 않으면 '아니요'입니다.

  • 수신 집합의 모든 객체가 지정된 다른 집합에도 있는지 여부를 나타내는 부울 값을 반환합니다.

    선언

    Objective-C

    - (BOOL)isSubsetOfSet:(nonnull RLMSet<RLMObjectType> *)set;

    스위프트

    func isSubset(of set: RLMSet<RLMObjectType>) -> Bool

    매개변수

    set

    수신 세트를 비교할 RLMSet입니다.

    반환 값

    수신 세트의 모든 객체가 otherSet에도 있으면 '예', 그렇지 않으면 '아니요'입니다.

  • 지정된 객체가 세트에 있는지 여부를 나타내는 부울 값을 반환합니다.

    선언

    Objective-C

    - (BOOL)containsObject:(nonnull RLMObjectType)anObject;

    스위프트

    func contains(_ anObject: RLMObjectType) -> Bool

    매개변수

    anObject

    세트에서 찾을 객체입니다.

    반환 값

    세트에 객체가 있으면 '예', 그렇지 않으면 '아니요'입니다.

  • 수신 세트를 다른 세트와 비교합니다.

    선언

    Objective-C

    - (BOOL)isEqualToSet:(nonnull RLMSet<RLMObjectType> *)otherSet;

    스위프트

    func isEqual(to otherSet: RLMSet<RLMObjectType>) -> Bool

    매개변수

    otherSet

    수신 집합을 비교할 집합입니다.

    반환 값

    otherSet의 내용이 수신 세트의 내용과 같으면 '예', 그렇지 않으면 '아니요'입니다.

세트 섹션화

알림

  • 세트가 변경될 때마다 호출될 블록을 등록합니다.

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

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

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

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

    Person *person = [[Person allObjectsInRealm:realm] firstObject];
    NSLog(@"person.dogs.count: %zu", person.dogs.count); // => 0
    self.token = [person.dogs addNotificationBlock(RLMSet<Dog *> *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";
        [person.dogs addObject:dog];
    }];
    // end of run loop execution context
    

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

    경고

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

    경고

    이 메서드는 고정되지 않은 managed 집합에서만 호출할 수 있습니다.

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)addNotificationBlock:
        (nonnull void (^)(RLMSet<RLMObjectType> *_Nullable,
                          RLMCollectionChange *_Nullable, NSError *_Nullable))block;

    스위프트

    func addNotificationBlock(_ block: @escaping (RLMSet<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void) -> RLMNotificationToken

    매개변수

    block

    세트가 변경될 때마다 호출되는 블록입니다.

    반환 값

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

  • 세트가 변경될 때마다 호출될 블록을 등록합니다.

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

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

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

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

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

    경고

    포함하는 Realm이 읽기 전용이거나 동결된 경우에는 이 메서드를 호출할 수 없습니다.

    경고

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

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull void (^)(RLMSet<RLMObjectType> *_Nullable,
                                               RLMCollectionChange *_Nullable,
                                               NSError *_Nullable))block
                       queue:(nullable dispatch_queue_t)queue;

    스위프트

    func addNotificationBlock(_ block: @escaping (RLMSet<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void, queue: dispatch_queue_t?) -> RLMNotificationToken

    매개변수

    block

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

    queue

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

    반환 값

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

  • 세트가 변경될 때마다 호출될 블록을 등록합니다.

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

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

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

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

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

    경고

    포함하는 Realm이 읽기 전용이거나 동결된 경우에는 이 메서드를 호출할 수 없습니다.

    경고

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

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull void (^)(RLMSet<RLMObjectType> *_Nullable,
                                               RLMCollectionChange *_Nullable,
                                               NSError *_Nullable))block
                    keyPaths:(nullable NSArray<NSString *> *)keyPaths
                       queue:(nullable dispatch_queue_t)queue;

    스위프트

    func addNotificationBlock(_ block: @escaping (RLMSet<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void, keyPaths: [String]?, queue: dispatch_queue_t?) -> RLMNotificationToken

    매개변수

    block

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

    keyPaths

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

    queue

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

    반환 값

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

  • 세트가 변경될 때마다 호출될 블록을 등록합니다.

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

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

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

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

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

    경고

    포함하는 Realm이 읽기 전용이거나 동결된 경우에는 이 메서드를 호출할 수 없습니다.

    경고

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

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull void (^)(RLMSet<RLMObjectType> *_Nullable,
                                               RLMCollectionChange *_Nullable,
                                               NSError *_Nullable))block
                    keyPaths:(nullable NSArray<NSString *> *)keyPaths;

    스위프트

    func addNotificationBlock(_ block: @escaping (RLMSet<RLMObjectType>?, RLMCollectionChange?, (any Error)?) -> Void, keyPaths: [String]?) -> RLMNotificationToken

    매개변수

    block

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

    keyPaths

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

    반환 값

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

속성 값 집계

  • 세트에 있는 모든 객체 중 지정된 속성의 최소값(가장 낮음)을 반환합니다.

    NSNumber *min = [object.setProperty minOfProperty:@"age"];
    

    경고

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

    선언

    Objective-C

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

    스위프트

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

    매개변수

    property

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

    반환 값

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

  • 세트에 있는 모든 객체 중 지정된 속성의 최대값(가장 높은 값)을 반환합니다.

    NSNumber *max = [object.setProperty maxOfProperty:@"age"];
    

    경고

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

    선언

    Objective-C

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

    스위프트

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

    매개변수

    property

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

    반환 값

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

  • 세트의 모든 객체에 대해 지정된 속성의 고유 값의 합계를 반환합니다.

    NSNumber *sum = [object.setProperty sumOfProperty:@"age"];
    

    경고

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

    선언

    Objective-C

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

    스위프트

    func sum(ofProperty property: String) -> NSNumber

    매개변수

    property

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

    반환 값

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

  • 세트의 객체에 대한 지정된 속성의 평균값을 반환합니다.

    NSNumber *average = [object.setProperty averageOfProperty:@"age"];
    

    경고

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

    선언

    Objective-C

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

    스위프트

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

    매개변수

    property

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

    반환 값

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

동결

  • 이 세트의 동결(불변) 스냅샷을 반환합니다.

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

    경고

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

    경고

    이 메서드는 관리되는 집합에서만 호출할 수 있습니다.

    경고

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

    선언

    Objective-C

    - (nonnull instancetype)freeze;

    스위프트

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

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

    선언

    Objective-C

    - (nonnull instancetype)thaw;

    스위프트

    func thaw() -> Self

사용할 수 없는 메서드

  • 사용할 수 없음

    RLMSet는 직접 만들 수 없습니다.

    -[RLMSet init] RLMSet을 직접 만들 수 없기 때문에 사용할 수 없습니다. RLMSetRLMObject속성은 액세스 시 느리게 생성됩니다.

    선언

    Objective-C

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

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

    +[RLMSet new] RLMSet을 직접 만들 수 없기 때문에 사용할 수 없습니다. RLMSetRLMObject속성은 액세스 시 느리게 생성됩니다.

    선언

    Objective-C

    + (nonnull instancetype)new;