RLMObject

Objective-C

@interface RLMObject : RLMObjectBase <RLMThreadConfined>

스위프트

@_nonSendable(_assumed) class RLMObject : RLMObjectBase, RLMThreadConfined

RLMObject Realms에 저장된 데이터를 나타내는 모델 객체의 기본 클래스입니다.

RLMObject 을(를) 서브클래스화하고 managed 속성을 추가하여 모델 클래스를 정의합니다. 그런 다음 RLMObject 클래스를 직접 사용하는 대신 사용자 지정 하위 클래스를 인스턴스화하여 사용합니다.

// Dog.h
@interface Dog : RLMObject
@property NSString *name;
@property BOOL      adopted;
@end

// Dog.m
@implementation Dog
@end //none needed

지원되는 속성 유형

  • NSString
  • NSInteger, int, long, floatdouble
  • BOOL 또는 bool
  • NSDate
  • NSData
  • NSNumber<X>여기서 XRLMInt, RLMFloat, RLMDouble 또는 RLMBool 중 하나이며, 선택적 숫자 속성의 경우
  • RLMObject 서브클래스를 사용하여 다대일 관계를 모델링합니다.
  • RLMArray<X>, 여기서 XRLMObject 서브클래스로, 다대다 관계를 모델링합니다.

쿼리하기

클래스 메서드 allObjects, objectsWhere:objectsWithPredicate: 를 통해 직접 쿼리를 시작할 수 있습니다. 이 메서드를 사용하면 기본 Realm에서 해당 클래스의 인스턴스에 대한 사용자 지정 하위 클래스를 쉽게 쿼리할 수 있습니다.

기본 Realm이 아닌 다른 Realm에서 검색하려면 allObjectsInRealm:, objectsInRealm:where:objectsInRealm:withPredicate: 클래스 메서드를 사용하세요.

~를 참조하세요.

RLMRealm

관계

자세한 내용은 Realm Swift 문서 를 참조하세요.

키-값 관찰

모든 RLMObject 속성(서브클래스에서 만든 속성 포함)은 realmobjectSchema 를 제외하고 키-값 관찰을 준수합니다.

Realm 객체를 관찰할 때는 다음 팁을 염두에 두세요.

  1. NSMutableArray 속성과RLMArray 달리 속성은 에서 반환된 프록시 객체를 -mutableArrayValueForKey: 사용하거나 포함 클래스에서 KVC 변형 메서드를 정의할 필요가 없습니다. RLMArray 에서 직접 메서드를 호출하기만 하면 됩니다. 모든 변경 사항은 포함 객체에서 자동으로 관찰됩니다.
  2. 관리되지 않는 RLMObject 인스턴스는 관찰된 속성이 있는 동안 Realm에 추가할 수 없습니다.
  3. -observeValueForKeyPath:ofObject:change:context: 내에서 managed RLMObject을 수정하는 것은 권장되지 않습니다. 속성은 Realm이 쓰기 트랜잭션(write transaction) 중이 아닌 경우(예: 다른 스레드에서 변경이 적용된 후 -[RLMRealm refresh] 가 호출된 경우) 및 변경 사항이 적용되기 전에 알림이 전송된 경우( NSKeyValueObservingOptionPrior 가 사용된 경우)에도 변경될 수 있습니다. 쓰기 트랜잭션(write transaction)을 시작할 수 없는 경우에 전송될 수 있습니다.

객체 생성 & 초기화

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

    RLMRealm 인스턴스에서 addObject: 를 호출하여 관리되지 않는 객체를 해당 Realm에 추가합니다.

    ~를 참조하세요.

    [RLMRealm addObject:]

    선언

    Objective-C

    - (nonnull instancetype)init;

    스위프트

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

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

    RLMRealm 인스턴스에서 addObject: 를 호출하여 관리되지 않는 객체를 해당 Realm에 추가합니다.

    ~를 참조하세요.

    [RLMRealm addObject:]

    선언

    Objective-C

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

    스위프트

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

    경고

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

    선언

    Objective-C

    + (nonnull NSString *)className;

    스위프트

    class func className() -> String

    반환 값

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

  • 주어진 값을 사용하여 Realm 객체의 인스턴스를 생성하고 이를 기본 Realm에 추가합니다.

    중첩된 객체가 인수에 포함되어 있으면 해당 객체에 대해 createInDefaultRealmWithValue: 이 재귀적으로 호출됩니다.

    value 인수는 키-값 코딩을 준수하는 객체, NSJSONSerialization 의 메서드에서 반환된 배열 또는 사전 또는 각 관리 속성에 대해 하나의 요소를 포함하는 배열일 수 있습니다.

    필수 속성이 없고 해당 속성이 기본값으로 정의되지 않은 경우 예외가 발생합니다.

    value 인수가 배열인 경우 모든 속성이 존재하고 유효해야 하며 모델에 정의된 속성과 동일한 순서여야 합니다.

    ~를 참조하세요.

    defaultPropertyValues

    선언

    Objective-C

    + (nonnull instancetype)createInDefaultRealmWithValue:(nonnull id)value;

    스위프트

    class func createInDefaultRealm(withValue value: Any) -> Self

    매개변수

    value

    객체를 채우는 데 사용되는 값입니다.

  • 주어진 값을 사용하여 Realm 객체의 인스턴스를 만들고 지정된 Realm에 추가합니다.

    중첩된 객체가 인수에 포함되어 있으면 해당 객체에 대해 createInRealm:withValue: 이 재귀적으로 호출됩니다.

    value 인수는 키-값 코딩을 준수하는 객체, NSJSONSerialization 의 메서드에서 반환된 배열 또는 사전 또는 각 관리 속성에 대해 하나의 요소를 포함하는 배열일 수 있습니다.

    필수 속성이 없고 해당 속성이 기본값으로 정의되지 않은 경우 예외가 발생합니다.

    value 인수가 배열인 경우 모든 속성이 존재하고 유효해야 하며 모델에 정의된 속성과 동일한 순서여야 합니다.

    ~를 참조하세요.

    defaultPropertyValues

    선언

    Objective-C

    + (nonnull instancetype)createInRealm:(nonnull RLMRealm *)realm
                                withValue:(nonnull id)value;

    스위프트

    class func create(in realm: RLMRealm, withValue value: Any) -> Self

    매개변수

    realm

    새로 생성된 객체를 managed 해야 하는 Realm입니다.

    value

    객체를 채우는 데 사용되는 값입니다.

  • 기본 Realm 내에서 Realm 객체를 만들거나 업데이트합니다.

    이 메서드는 기본 키가 정의된 Realm 객체 유형에서만 호출할 수 있습니다. 기본 Realm에 동일한 기본 키 값을 가진 객체가 이미 있는 경우 해당 값이 업데이트되고 객체가 반환됩니다. 그렇지 않으면 이 메서드는 기본 Realm에 객체의 새 인스턴스를 생성하고 채웁니다.

    중첩된 객체가 인수에 포함된 경우 기본 키가 있으면 createOrUpdateInDefaultRealmWithValue: 가 재귀적으로 호출되고, 그렇지 않으면 createInDefaultRealmWithValue: 가 재귀적으로 호출됩니다.

    value 인수는 객체를 채우는 데 사용됩니다. 이는 Realm 객체, 키-값 코딩을 준수하는 객체, NSJSONSerialization 의 메서드에서 반환된 배열 또는 사전, 또는 각 managed 속성에 대해 하나의 요소를 포함하는 배열일 수 있습니다.

    객체를 만드는 중일 때 필수 속성이 없고 해당 속성이 기본값으로 정의되지 않은 경우 예외가 발생합니다.

    value 인수가 기본 Realm에서 이미 managed Realm 객체이고 인수의 유형이 수신자와 동일하며 객체의 managed 속성 값이 동일한 경우 이 메서드는 아무 작업도 수행하지 않습니다.

    객체를 업데이트하는 경우 스키마에 정의된 각 속성은 키-값 코딩을 사용하여 value 에서 복사하여 설정됩니다. 지정된 속성 이름(또는 게터 이름이 정의된 경우)에 대해 value 인수가 valueForKey: 에 응답하지 않는 경우 해당 값은 변경되지 않습니다. NSNull 을 업데이트된 값으로 사용하여 객체의 Null 허용 속성을 nil로 설정할 수 있습니다. 기존 값이 설정 중인 새 값과 동일한 경우에도 각 속성이 설정되며 알림에서 모두 변경됨을 보고합니다. 변경된 값만 설정하는 이 함수의 버전은 createOrUpdateModifiedInDefaultRealmWithValue: 를 참조하세요.

    value 인수가 배열인 경우 모든 속성이 존재하고 유효해야 하며 모델에 정의된 속성과 동일한 순서여야 합니다.

    ~를 참조하세요.

    defaultPropertyValues, primaryKey

    선언

    Objective-C

    + (nonnull instancetype)createOrUpdateInDefaultRealmWithValue:(nonnull id)value;

    스위프트

    class func createOrUpdateInDefaultRealm(withValue value: Any) -> Self

    매개변수

    value

    객체를 채우는 데 사용되는 값입니다.

  • 기본 Realm 내에서 Realm 객체를 만들거나 업데이트합니다.

    이 메서드는 기본 키가 정의된 Realm 객체 유형에서만 호출할 수 있습니다. 기본 Realm에 동일한 기본 키 값을 가진 객체가 이미 있는 경우 해당 값이 업데이트되고 객체가 반환됩니다. 그렇지 않으면 이 메서드는 기본 Realm에 객체의 새 인스턴스를 생성하고 채웁니다.

    중첩된 객체가 인수에 포함된 경우 기본 키가 있으면 createOrUpdateModifiedInDefaultRealmWithValue: 가 재귀적으로 호출되고, 그렇지 않으면 createInDefaultRealmWithValue: 가 재귀적으로 호출됩니다.

    value 인수는 객체를 채우는 데 사용됩니다. 이는 Realm 객체, 키-값 코딩을 준수하는 객체, NSJSONSerialization 의 메서드에서 반환된 배열 또는 사전, 또는 각 managed 속성에 대해 하나의 요소를 포함하는 배열일 수 있습니다.

    객체를 만드는 중일 때 필수 속성이 없고 해당 속성이 기본값으로 정의되지 않은 경우 예외가 발생합니다.

    value 인수가 기본 Realm에서 이미 managed Realm 객체이고 인수의 유형이 수신자와 동일하며 객체의 managed 속성 값이 동일한 경우 이 메서드는 아무 작업도 수행하지 않습니다.

    객체를 업데이트하는 경우 스키마에 정의된 각 속성은 키-값 코딩을 사용하여 value 에서 복사하여 설정됩니다. 지정된 속성 이름(또는 게터 이름이 정의된 경우)에 대해 value 인수가 valueForKey: 에 응답하지 않는 경우 해당 값은 변경되지 않습니다. NSNull 을 업데이트된 값으로 사용하여 객체의 Null 허용 속성을 nil로 설정할 수 있습니다. createOrUpdateInDefaultRealmWithValue: 와 달리 값이 변경된 속성만 설정되며 이 호출에 의해 생성된 변경 알림은 실제로 변경된 속성만 보고합니다.

    어떤 속성이 변경되었는지 확인하면 약간의 오버헤드가 발생하므로, 설정 중인 속성의 전부 또는 거의 전부가 변경된 경우 이 메서드는 속도가 느려질 수 있습니다. 설정 중인 속성의 대부분 또는 전부가 변경되지 않은 경우, 이 방법을 사용하면 조건 없이 모든 속성을 설정하는 것보다 훨씬 빠르고 Realm에 기록해야 하는 데이터의 양이 줄어들어 I/O 시간과 디스크 공간이 모두 절약됩니다. .

    value 인수가 배열인 경우 모든 속성이 존재하고 유효해야 하며 모델에 정의된 속성과 동일한 순서여야 합니다.

    ~를 참조하세요.

    defaultPropertyValues, primaryKey

    선언

    Objective-C

    + (nonnull instancetype)createOrUpdateModifiedInDefaultRealmWithValue:
        (nonnull id)value;

    스위프트

    class func createOrUpdateModifiedInDefaultRealm(withValue value: Any) -> Self

    매개변수

    value

    객체를 채우는 데 사용되는 값입니다.

  • 지정된 Realm 내에서 Realm 객체를 만들거나 업데이트합니다.

    이 메서드는 기본 키가 정의된 Realm 객체 유형에서만 호출할 수 있습니다. 주어진 Realm에 동일한 기본 키 값을 가진 객체가 이미 있는 경우 해당 값이 업데이트되고 객체가 반환됩니다. 그렇지 않으면 이 메서드는 지정된 Realm에서 이 객체의 새 인스턴스를 생성하고 채웁니다.

    중첩된 객체가 인수에 포함된 경우 기본 키가 있으면 createOrUpdateInRealm:withValue: 가 재귀적으로 호출되고, 그렇지 않으면 createInRealm:withValue: 가 재귀적으로 호출됩니다.

    value 인수는 객체를 채우는 데 사용됩니다. 이는 Realm 객체, 키-값 코딩을 준수하는 객체, NSJSONSerialization 의 메서드에서 반환된 배열 또는 사전, 또는 각 managed 속성에 대해 하나의 요소를 포함하는 배열일 수 있습니다.

    객체를 만드는 중일 때 필수 속성이 없고 해당 속성이 기본값으로 정의되지 않은 경우 예외가 발생합니다.

    value 인수가 주어진 Realm에서 이미 managed Realm 객체이고 인수의 유형이 수신자와 동일하며 객체의 managed 속성 값이 동일한 경우 이 메서드는 아무 작업도 수행하지 않습니다.

    객체를 업데이트하는 경우 스키마에 정의된 각 속성은 키-값 코딩을 사용하여 value 에서 복사하여 설정됩니다. 지정된 속성 이름(또는 게터 이름이 정의된 경우)에 대해 value 인수가 valueForKey: 에 응답하지 않는 경우 해당 값은 변경되지 않습니다. NSNull 을 업데이트된 값으로 사용하여 객체의 Null 허용 속성을 nil로 설정할 수 있습니다. 기존 값이 설정 중인 새 값과 동일한 경우에도 각 속성이 설정되며 알림에서 모두 변경됨을 보고합니다. 변경된 값만 설정하는 이 함수의 버전은 createOrUpdateModifiedInRealm:withValue: 를 참조하세요.

    value 인수가 배열인 경우 모든 속성이 존재하고 유효해야 하며 모델에 정의된 속성과 동일한 순서여야 합니다.

    ~를 참조하세요.

    defaultPropertyValues, primaryKey

    선언

    Objective-C

    + (nonnull instancetype)createOrUpdateInRealm:(nonnull RLMRealm *)realm
                                        withValue:(nonnull id)value;

    스위프트

    class func createOrUpdate(in realm: RLMRealm, withValue value: Any) -> Self

    매개변수

    realm

    객체를 소유해야 하는 Realm입니다.

    value

    객체를 채우는 데 사용되는 값입니다.

  • 지정된 Realm 내에서 Realm 객체를 만들거나 업데이트합니다.

    이 메서드는 기본 키가 정의된 Realm 객체 유형에서만 호출할 수 있습니다. 주어진 Realm에 동일한 기본 키 값을 가진 객체가 이미 있는 경우 해당 값이 업데이트되고 객체가 반환됩니다. 그렇지 않으면 이 메서드는 지정된 Realm에서 이 객체의 새 인스턴스를 생성하고 채웁니다.

    중첩된 객체가 인수에 포함된 경우 기본 키가 있으면 createOrUpdateInRealm:withValue: 가 재귀적으로 호출되고, 그렇지 않으면 createInRealm:withValue: 가 재귀적으로 호출됩니다.

    value 인수는 객체를 채우는 데 사용됩니다. 이는 Realm 객체, 키-값 코딩을 준수하는 객체, NSJSONSerialization 의 메서드에서 반환된 배열 또는 사전, 또는 각 managed 속성에 대해 하나의 요소를 포함하는 배열일 수 있습니다.

    객체를 만드는 중일 때 필수 속성이 없고 해당 속성이 기본값으로 정의되지 않은 경우 예외가 발생합니다.

    value 인수가 주어진 Realm에서 이미 managed Realm 객체이고 인수의 유형이 수신자와 동일하며 객체의 managed 속성 값이 동일한 경우 이 메서드는 아무 작업도 수행하지 않습니다.

    객체를 업데이트하는 경우 스키마에 정의된 각 속성은 키-값 코딩을 사용하여 value 에서 복사하여 설정됩니다. 지정된 속성 이름(또는 게터 이름이 정의된 경우)에 대해 value 인수가 valueForKey: 에 응답하지 않는 경우 해당 값은 변경되지 않습니다. NSNull 을 업데이트된 값으로 사용하여 객체의 Null 허용 속성을 nil로 설정할 수 있습니다. createOrUpdateInRealm:withValue: 와 달리 값이 변경된 속성만 설정되며 이 호출에 의해 생성된 변경 알림은 실제로 변경된 속성만 보고합니다.

    어떤 속성이 변경되었는지 확인하면 약간의 오버헤드가 발생하므로, 설정 중인 속성의 전부 또는 거의 전부가 변경된 경우 이 메서드는 속도가 느려질 수 있습니다. 설정 중인 속성의 대부분 또는 전부가 변경되지 않은 경우, 이 방법을 사용하면 조건 없이 모든 속성을 설정하는 것보다 훨씬 빠르고 Realm에 기록해야 하는 데이터의 양이 줄어들어 I/O 시간과 디스크 공간이 모두 절약됩니다. .

    value 인수가 배열인 경우 모든 속성이 존재하고 유효해야 하며 모델에 정의된 속성과 동일한 순서여야 합니다.

    ~를 참조하세요.

    defaultPropertyValues, primaryKey

    선언

    Objective-C

    + (nonnull instancetype)createOrUpdateModifiedInRealm:(nonnull RLMRealm *)realm
                                                withValue:(nonnull id)value;

    스위프트

    class func createOrUpdateModified(in realm: RLMRealm, withValue value: Any) -> Self

    매개변수

    realm

    객체를 소유해야 하는 Realm입니다.

    value

    객체를 채우는 데 사용되는 값입니다.

속성

  • 객체를 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 }
  • 이 객체가 동결되었는지 여부를 나타냅니다.

    ~를 참조하세요.

    -[RLMObject freeze]

    선언

    Objective-C

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

    스위프트

    var isFrozen: Bool { get }

객체 사용자 지정

  • 인덱스화해야 하는 속성의 속성 이름 배열을 반환합니다.

    문자열, 정수, 부울 및 NSDate 속성만 지원됩니다.

    선언

    Objective-C

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

    스위프트

    class func indexedProperties() -> [String]

    반환 값

    속성 이름의 배열입니다.

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

    선언

    Objective-C

    + (nullable NSDictionary *)defaultPropertyValues;

    스위프트

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

    반환 값

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

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

    RLMPropertyTypeStringRLMPropertyTypeInt 유형의 속성만 프라이머리 키로 지정할 수 있습니다. 기본 키 속성은 속성이 설정될 때마다 각 값에 고유성을 적용하므로 약간의 오버헤드가 발생합니다. 인덱스는 프라이머리 키 속성에 대해 자동으로 생성됩니다.

    선언

    Objective-C

    + (nullable NSString *)primaryKey;

    스위프트

    class func primaryKey() -> String?

    반환 값

    프라이머리 키로 지정된 속성의 이름입니다.

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

    선언

    Objective-C

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

    스위프트

    class func ignoredProperties() -> [String]?

    반환 값

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

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

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

    RLMObject 유형의 속성은 선택 사항이 될 수 없습니다. 배열 및 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 인스턴스에 매핑하는 사전입니다.

기본 Realm에서 객체 가져오기 & 쿼리하기

  • 기본 Realm에서 이 Realm 객체 유형의 모든 객체를 반환합니다.

    선언

    Objective-C

    + (nonnull RLMResults *)allObjects;

    스위프트

    class func allObjects() -> RLMResults

    반환 값

    기본 Realm에서 이 유형의 모든 객체를 포함하는 RLMResults 입니다.

  • 기본 Realm에서 지정된 조건자와 일치하는 이 Realm 객체 유형의 모든 객체를 반환합니다.

    선언

    Objective-C

    + (nonnull RLMResults *)objectsWhere:(nonnull NSString *)predicateFormat, ...;

    매개변수

    predicateFormat

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

    반환 값

    기본 Realm에서 지정된 술어와 일치하는 이 유형의 모든 객체를 포함하는 RLMResults 입니다.

  • 기본 Realm에서 지정된 조건자와 일치하는 이 Realm 객체 유형의 모든 객체를 반환합니다.

    선언

    Objective-C

    + (nonnull RLMResults *)objectsWithPredicate:(nullable NSPredicate *)predicate;

    스위프트

    class func objects(with predicate: NSPredicate?) -> RLMResults

    매개변수

    predicate

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

    반환 값

    기본 Realm에서 지정된 술어와 일치하는 이 유형의 모든 객체를 포함하는 RLMResults 입니다.

  • 기본 Realm에서 주어진 프라이머리 키를 사용하여 이 객체 유형의 단일 인스턴스를 조회합니다.

    주어진 기본 키가 있는 기본 Realm에서 객체를 반환하거나 객체가 없는 경우 nil 을(를) 반환합니다. 이는 이에 상응하는 [[SubclassName objectsWhere:@"primaryKeyPropertyName = %@", key] firstObject] 보다 약간 빠릅니다.

    이 메서드를 사용하려면 수신 서브클래스에서 primaryKey 을(를) 재정의해야 합니다.

    ~를 참조하세요.

    -primaryKey

    선언

    Objective-C

    + (nullable instancetype)objectForPrimaryKey:(nullable id)primaryKey;

    스위프트

    class func object(forPrimaryKey primaryKey: Any?) -> Self?

    반환 값

    이 Realm 객체 유형의 객체이거나, 지정된 기본 키를 가진 객체가 없는 경우 nil 입니다.

특정 Realm 쿼리

  • 지정된 Realm에서 이 Realm 객체 유형의 모든 객체를 반환합니다.

    선언

    Objective-C

    + (nonnull RLMResults *)allObjectsInRealm:(nonnull RLMRealm *)realm;

    스위프트

    class func allObjects(in realm: RLMRealm) -> RLMResults

    매개변수

    realm

    쿼리할 Realm입니다.

    반환 값

    지정된 Realm에서 이 유형의 모든 객체를 포함하는 RLMResults 입니다.

  • 지정된 Realm에서 주어진 조건자와 일치하는 이 Realm 객체 유형의 모든 객체를 반환합니다.

    선언

    Objective-C

    + (nonnull RLMResults *)objectsInRealm:(nonnull RLMRealm *)realm
                                     where:(nonnull NSString *)predicateFormat, ...;

    매개변수

    predicateFormat

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

    realm

    쿼리할 Realm입니다.

    반환 값

    Realm에서 주어진 조건자와 일치하는 이 유형의 모든 객체를 포함하는 RLMResults 입니다.

  • 지정된 Realm에서 주어진 조건자와 일치하는 이 Realm 객체 유형의 모든 객체를 반환합니다.

    선언

    Objective-C

    + (nonnull RLMResults *)objectsInRealm:(nonnull RLMRealm *)realm
                             withPredicate:(nullable NSPredicate *)predicate;

    스위프트

    class func objects(in realm: RLMRealm, with predicate: NSPredicate?) -> RLMResults

    매개변수

    predicate

    요소를 필터링하는 데 사용하는 조건자입니다.

    realm

    쿼리할 Realm입니다.

    반환 값

    Realm에서 주어진 조건자와 일치하는 이 유형의 모든 객체를 포함하는 RLMResults 입니다.

  • 지정된 Realm에서 주어진 기본 키를 사용하여 이 Realm 객체 유형의 단일 인스턴스를 조회합니다.

    주어진 기본 키가 있는 지정된 Realm에서 객체를 반환하거나 객체가 존재하지 않는 경우 nil 을(를) 반환합니다. 이는 이에 상응하는 [[SubclassName objectsInRealm:realm where:@"primaryKeyPropertyName = %@", key] firstObject] 보다 약간 빠릅니다.

    이 메서드를 사용하려면 수신 서브클래스에서 primaryKey 을(를) 재정의해야 합니다.

    ~를 참조하세요.

    -primaryKey

    선언

    Objective-C

    + (nullable instancetype)objectInRealm:(nonnull RLMRealm *)realm
                             forPrimaryKey:(nullable id)primaryKey;

    스위프트

    class func object(in realm: RLMRealm, forPrimaryKey primaryKey: Any?) -> Self?

    반환 값

    이 Realm 객체 유형의 객체이거나, 지정된 기본 키를 가진 객체가 없는 경우 nil 입니다.

알림

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

    이 블록은 객체를 삭제하거나 속성을 기존 값으로 설정하는 자체 할당을 포함하여 객체의 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;

    스위프트

    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 RLMObject *)object;

    스위프트

    func isEqual(to object: RLMObject) -> 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