RLMEmbeddedObject

Objective-C

@interface RLMEmbeddedObject : RLMObjectBase <RLMThreadConfined>

스위프트

@_nonSendable(_assumed) class RLMEmbeddedObject : RLMObjectBase, RLMThreadConfined

RLMEmbeddedObject Realm 모델 객체를 정의하는 데 사용되는 기본 클래스입니다.

내장된 객체는 일반 객체와 유사하게 작동하지만 단일 상위 객체(자체적으로 내장될 수 있음)가 소유합니다. 일반적인 최상위 객체와 달리 내장된 객체는 Realm에서 직접 만들거나 Realm에 추가할 수 없습니다. 대신 상위 객체의 일부로 만들거나 관리되지 않는 객체를 상위 객체의 속성에 할당하는 방식으로만 만들 수 있습니다. 상위 객체가 삭제되거나 RLMObject 속성을 재할당하거나 포함된 배열에서 포함된 객체를 제거하여 상위 객체가 더 이상 포함된 객체를 가리키지 않도록 수정될 때 포함된 객체가 자동으로 삭제됩니다.

내장된 객체는 연결되는 상위 객체가 하나만 있을 수 있으며 기존 managed 내장된 객체에 연결하려고 하면 예외가 발생합니다.

RLMEmbeddedObject 에서 지원되는 속성 유형은 내장된 객체가 최상위 객체에 연결할 수 없다는 점을 제외하면 RLMObject 와 동일하므로 RLMObjectRLMArray<RLMObject> 속성은 지원되지 않습니다(RLMEmbeddedObjectRLMArray<RLMEmbeddedObject> ) 입니다.

내장된 객체는 기본 키나 인덱싱된 속성을 가질 수 없습니다.

객체 생성 & 초기화

  • Realm 객체의 관리되지 않는 인스턴스를 만듭니다.

    managed되지 않는 내장된 객체는 managed Realm 객체의 객체 속성에 할당하거나 managed RLMArray에 추가하여 Realm에 추가할 수 있습니다.

    선언

    Objective-C

    - (nonnull instancetype)init;

    스위프트

    init()
  • Realm 객체의 관리되지 않는 인스턴스를 만듭니다.

    NSArray 또는 NSDictionary 인스턴스를 전달하여 객체의 속성 값을 설정합니다.

    managed되지 않는 내장된 객체는 managed Realm 객체의 객체 속성에 할당하거나 managed RLMArray에 추가하여 Realm에 추가할 수 있습니다.

    선언

    Objective-C

    - (nonnull instancetype)initWithValue:(nonnull id)value;

    스위프트

    convenience init(value: Any)
  • Realm 객체 하위 클래스의 클래스 이름을 반환합니다.

    경고

    재정의하지 마세요. Realm은 정확한 클래스 이름을 반환하는 이 메서드를 사용합니다.

    선언

    Objective-C

    + (nonnull NSString *)className;

    스위프트

    class func className() -> String

    반환 값

    모델 클래스의 클래스 이름입니다.

속성

  • 객체를 managed하는 Realm이거나 객체가 관리되지 않는 경우 nil 입니다.

    선언

    Objective-C

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

    스위프트

    var realm: RLMRealm? { get }
  • managed 객체의 속성을 나열하는 객체 스키마입니다.

    선언

    Objective-C

    @property (nonatomic, readonly) RLMObjectSchema *_Nonnull objectSchema;

    스위프트

    var objectSchema: RLMObjectSchema { get }
  • 객체가 유효하지 않아 더 이상 액세스할 수 없는지 여부를 나타냅니다.

    객체는 관리된 Realm에서 삭제되었거나 해당 Realm에서 invalidate 이(가) 호출된 경우 객체에 더 이상 액세스할 수 없습니다.

    선언

    Objective-C

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

    스위프트

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

    ~를 참조하세요.

    -[RLMEmbeddedObject freeze]

    선언

    Objective-C

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

    스위프트

    var isFrozen: Bool { get }

객체 사용자 지정

  • 각 속성에 사용할 기본값을 지정하려면 이 메서드를 재정의합니다.

    선언

    Objective-C

    + (nullable NSDictionary *)defaultPropertyValues;

    스위프트

    class func defaultPropertyValues() -> [AnyHashable : Any]?

    반환 값

    속성 이름을 기본값에 매핑하는 딕셔너리입니다.

  • 무시할 속성의 이름을 지정하려면 이 메서드를 재정의합니다. 이러한 속성은 객체를 managed하는 Realm에서 managed하지 않습니다.

    선언

    Objective-C

    + (nullable NSArray<NSString *> *)ignoredProperties;

    스위프트

    class func ignoredProperties() -> [String]?

    반환 값

    무시할 속성 이름의 배열입니다.

  • 선택 사항이 아닌 속성의 이름을 지정하려면 이 메서드를 재정의합니다(예: 에는 nil 값을 할당할 수 없습니다).

    기본적으로 값을 nil 으)로 설정할 수 있는 유형의 모든 속성은 선택적 속성으로 간주됩니다. Realm의 객체가 속성에 대해 항상nil 이 아닌 값을 저장하도록 하려면 이 메서드에서 반환된 배열에 속성의 이름을 추가하세요.

    RLMEmbeddedObject 유형의 속성은 선택 사항이 될 수 없습니다. 배열 및 NSNumber 속성은 선택 사항이 아닐 수 있지만 그렇게 할 이유가 없습니다. 배열은 nil 저장을 지원하지 않으므로 선택 사항이 아닌 숫자를 원하는 경우 대신 기본 유형을 사용해야 합니다.

    선언

    Objective-C

    + (nonnull NSArray<NSString *> *)requiredProperties;

    스위프트

    class func requiredProperties() -> [String]

    반환 값

    필수 속성 이름의 배열입니다.

  • 연결 객체가 포함된 속성과 관련된 정보를 제공하려면 이 메서드를 재정의합니다.

    RLMLinkingObjects 유형의 각 속성에는 속성 이름으로 구성된 이 메서드가 반환하는 딕셔너리 키가 있어야 합니다. 해당 값은 속성이 연결된 클래스 및 속성을 설명하는 RLMPropertyDescriptor 의 인스턴스여야 합니다.

    return @{ @"owners": [RLMPropertyDescriptor descriptorWithClass:Owner.class propertyName:@"dogs"] };
    

    선언

    Objective-C

    + (nonnull NSDictionary<NSString *, RLMPropertyDescriptor *> *)
        linkingObjectsProperties;

    스위프트

    class func linkingObjectsProperties() -> [String : RLMPropertyDescriptor]

    반환 값

    속성 이름을 RLMPropertyDescriptor 인스턴스에 매핑하는 사전입니다.

알림

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

    이 블록은 객체를 삭제하거나 속성을 기존 값으로 설정하는 자체 할당을 포함하여 객체의 managed 속성을 수정하는 각 쓰기 트랜잭션(write transaction) 후에 비동기적으로 호출됩니다.

    다른 스레드나 다른 프로세스에서 수행되는 쓰기 트랜잭션 (write transactions)의 경우 관리 Realm이 변경 사항이 포함된 버전으로 (자동)새로 고침될 때 블록이 호출되는 반면, 로컬 쓰기 트랜잭션 (write transaction)의 경우 다음과 같은 미래의 어느 점에 블록이 호출됩니다. 쓰기 트랜잭션 (write transaction)이 커밋됩니다.

    알림은 표준 이벤트 루프를 통해 전달되므로 다른 활동으로 이벤트 루프가 차단된 동안에는 전달할 수 없습니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다.

    RLMArrayRLMResults 과 달리 새 알림 차단을 추가한 후에는 '초기' 콜백이 이루어지지 않습니다.

    Realm에서 managed 객체만 이러한 방식으로 관찰할 수 있습니다. 블록에 업데이트를 전송하려는 한 반환된 토큰을 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -invalidate 을 호출합니다.

    콜백 블록 내에서 관찰된 객체에 대한 강력한 참고를 캡처하는 것이 안전합니다. 콜백이 객체 자체가 아닌 반환된 토큰에 의해 유지되므로 유지 주기가 없습니다.

    경고

    이 메서드는 포함하는 Realm이 읽기 전용인 경우 또는 관리되지 않는 객체에서는 쓰기 트랜잭션(write transaction) 중에 호출할 수 없습니다.

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)addNotificationBlock:
        (nonnull RLMObjectChangeBlock)block;

    스위프트

    func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock) -> RLMNotificationToken

    매개변수

    block

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

    반환 값

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

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

    이 블록은 객체를 삭제하거나 속성을 기존 값으로 설정하는 자체 할당을 포함하여 객체의 managed 속성을 수정하는 각 쓰기 트랜잭션(write transaction) 후에 비동기적으로 호출됩니다.

    다른 스레드 또는 다른 프로세스에서 수행되는 쓰기 트랜잭션 (write transaction)의 경우 관리 Realm이 변경 사항이 포함된 버전으로 (자동)새로 고침될 때 블록이 호출되는 반면, 로컬 쓰기 트랜잭션 (write transaction)의 경우 다음과 같은 미래의 어느 점에 블록이 호출됩니다. 쓰기 트랜잭션 (write transaction)이 커밋됩니다.

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

    RLMArrayRLMResults 과 달리 새 알림 차단을 추가한 후에는 '초기' 콜백이 이루어지지 않습니다.

    Realm에서 managed 객체만 이러한 방식으로 관찰할 수 있습니다. 블록에 업데이트를 전송하려는 한 반환된 토큰을 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -invalidate 을 호출합니다.

    콜백 블록 내에서 관찰된 객체에 대한 강력한 참고를 캡처하는 것이 안전합니다. 콜백이 객체 자체가 아닌 반환된 토큰에 의해 유지되므로 유지 주기가 없습니다.

    경고

    이 메서드는 포함하는 Realm이 읽기 전용인 경우 또는 관리되지 않는 객체에서는 쓰기 트랜잭션(write transaction) 중에 호출할 수 없습니다.

    경고

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

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull RLMObjectChangeBlock)block
                       queue:(nonnull dispatch_queue_t)queue;

    스위프트

    func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock, queue: dispatch_queue_t) -> RLMNotificationToken

    매개변수

    block

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

    queue

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

    반환 값

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

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

    이 블록은 객체를 삭제하거나 속성을 기존 값으로 설정하는 자체 할당을 포함하여 객체의 managed 속성을 수정하는 각 쓰기 트랜잭션(write transaction) 후에 비동기적으로 호출됩니다.

    다른 스레드 또는 다른 프로세스에서 수행되는 쓰기 트랜잭션 (write transaction)의 경우 관리 Realm이 변경 사항이 포함된 버전으로 (자동)새로 고침될 때 블록이 호출되는 반면, 로컬 쓰기 트랜잭션 (write transaction)의 경우 다음과 같은 미래의 어느 점에 블록이 호출됩니다. 쓰기 트랜잭션 (write transaction)이 커밋됩니다.

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

    RLMArrayRLMResults 과 달리 새 알림 차단을 추가한 후에는 '초기' 콜백이 이루어지지 않습니다.

    Realm에서 managed 객체만 이러한 방식으로 관찰할 수 있습니다. 블록에 업데이트를 전송하려는 한 반환된 토큰을 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -invalidate 을 호출합니다.

    콜백 블록 내에서 관찰된 객체에 대한 강력한 참고를 캡처하는 것이 안전합니다. 콜백이 객체 자체가 아닌 반환된 토큰에 의해 유지되므로 유지 주기가 없습니다.

    경고

    이 메서드는 포함하는 Realm이 읽기 전용인 경우 또는 관리되지 않는 객체에서는 쓰기 트랜잭션(write transaction) 중에 호출할 수 없습니다.

    경고

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

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull RLMObjectChangeBlock)block
                    keyPaths:(nonnull NSArray<NSString *> *)keyPaths
                       queue:(nonnull dispatch_queue_t)queue;

    스위프트

    func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock, keyPaths: [String], queue: dispatch_queue_t) -> RLMNotificationToken

    매개변수

    block

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

    keyPaths

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

    queue

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

    반환 값

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

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

    이 블록은 객체를 삭제하거나 속성을 기존 값으로 설정하는 자체 할당을 포함하여 객체의 managed 속성을 수정하는 각 쓰기 트랜잭션(write transaction) 후에 비동기적으로 호출됩니다.

    다른 스레드 또는 다른 프로세스에서 수행되는 쓰기 트랜잭션 (write transaction)의 경우 관리 Realm이 변경 사항이 포함된 버전으로 (자동)새로 고침될 때 블록이 호출되는 반면, 로컬 쓰기 트랜잭션 (write transaction)의 경우 다음과 같은 미래의 어느 점에 블록이 호출됩니다. 쓰기 트랜잭션 (write transaction)이 커밋됩니다.

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

    RLMArrayRLMResults 과 달리 새 알림 차단을 추가한 후에는 '초기' 콜백이 이루어지지 않습니다.

    Realm에서 managed 객체만 이러한 방식으로 관찰할 수 있습니다. 블록에 업데이트를 전송하려는 한 반환된 토큰을 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 -invalidate 을 호출합니다.

    콜백 블록 내에서 관찰된 객체에 대한 강력한 참고를 캡처하는 것이 안전합니다. 콜백이 객체 자체가 아닌 반환된 토큰에 의해 유지되므로 유지 주기가 없습니다.

    경고

    이 메서드는 포함하는 Realm이 읽기 전용인 경우 또는 관리되지 않는 객체에서는 쓰기 트랜잭션(write transaction) 중에 호출할 수 없습니다.

    경고

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

    선언

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:(nonnull RLMObjectChangeBlock)block
                    keyPaths:(nonnull NSArray<NSString *> *)keyPaths;

    스위프트

    func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock, keyPaths: [String]) -> RLMNotificationToken

    매개변수

    block

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

    keyPaths

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

    반환 값

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

기타 인스턴스 메서드

  • 다른 Realm 객체 인스턴스가 수신자를 관리하는 Realm의 수신자와 동일한 객체를 점하는 경우 예를 반환합니다.

    동결된 객체 및 Realm 객체 유형의 기본 키가 있는 경우, 이 메서드와 동일한 로직을 사용하도록 isEqual: 를 재정의합니다( hash 에 대한 해당 구현도 함께 사용). 기본 키가 없는 고정되지 않은 객체는 isEqual:hash 에 포인터 ID를 사용합니다.

    선언

    Objective-C

    - (BOOL)isEqualToObject:(nonnull RLMEmbeddedObject *)object;

    스위프트

    func isEqual(to object: RLMEmbeddedObject) -> Bool

    매개변수

    object

    수신자를 비교할 객체입니다.

    반환 값

    객체가 수신자와 동일한 객체를 나타내는지 여부입니다.

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

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

    경고

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

    경고

    이 메서드는 managed 객체에 대해서만 호출할 수 있습니다.

    선언

    Objective-C

    - (nonnull instancetype)freeze;

    스위프트

    func freeze() -> Self
  • 이 객체의 라이브(변경 가능) 참고를 반환합니다.

    이 메서드는 동일한 동결된 객체의 라이브 복사본에 대한 managed 접근자를 만듭니다. 이미 라이브 객체에 대해 호출되면 자체를 반환합니다.

    선언

    Objective-C

    - (nonnull instancetype)thaw;

    스위프트

    func thaw() -> Self