프로토콜

다음 프로토콜은 전 세계적으로 사용할 수 있습니다.

  • RLMArray, RLMSet & RLMResults에 대한 반복자 지원을 정의하는 프로토콜입니다.

    더 보기

    선언

    스위프트

    public protocol _RLMCollectionIterator : Sequence
  • RLMDictionary에 대한 반복자 지원을 정의하는 프로토콜입니다.

    선언

    스위프트

    public protocol _RLMDictionaryIterator
  • 동기화된 Realm의 파티션 값으로 사용할 수 있는 유형을 표시하는 태그 프로토콜입니다.

    선언

    스위프트

    public protocol PartitionValue : Sendable
  • BSON 값을 나타내는 프로토콜.

    다음의 사항도 참조하세요.

    bsonspec.org

    선언

    스위프트

    public protocol BSON : PartitionValue, Equatable

식별 가능

  • Realm 객체의 기본 ID를 정의하는 프로토콜입니다.

    객체 하위 클래스가 이 프로토콜을 준수한다고 선언하면 Realm 객체에서 작동하는 Identifiable id 에 대한 기본 구현을 제공할 수 있습니다.

    // Automatically conforms to `Identifiable`
    class MyObjectType: Object, ObjectKeyIdentifiable {
        // ...
    }
    

    원하는 경우 Identifiable 를 수동으로 준수할 수도 있지만 managed 객체에는 객체의 메모리 주소를 사용할 수 없습니다 .

    더 보기

    선언

    스위프트

    @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
    public protocol ObjectKeyIdentifiable : Identifiable

결합

  • valuePublisher() 또는 changesetPublisher() 에 전달될 수 있는 유형입니다.

    선언

    스위프트

    @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
    public protocol RealmSubscribable

RealmCollection 프로토콜

공개 API

  • Realm이 지원하는 유형과 매핑할 수 있는 유형입니다.

    Realm이 기본적으로 지원하지 않는 Realm에 유형을 저장하려면 해당 유형을 CustomPersistable 또는 FailableCustomPersistable을 준수한다고 선언하세요. 이를 위해서는 이 유형이 매핑될 Realm 유형을 나타내는 PersistedType 이라는 연관 유형, PersistedType 을 취하는 이니셜라이저, 적절한 PersistedType 을 반환하는 속성을 정의해야 합니다. 예를 들어 URL 을 지속 가능하게 만들려면 다음을 수행합니다.

    // Not all strings are valid URLs, so this uses
    // FailableCustomPersistable to handle the case when the data
    // in the Realm isn't a valid URL.
    extension URL: FailableCustomPersistable {
        typealias PersistedType = String
        init?(persistedValue: String) {
            self.init(string: persistedValue)
        }
        var persistableValue: PersistedType {
            self.absoluteString
        }
    }
    

    이 작업을 수행한 후에는 URL을 사용하여 속성을 정의할 수 있습니다.

    class MyModel: Object {
        @Persisted var url: URL
        @Persisted var mapOfUrls: Map<String, URL>
    }
    

    PersistedType Realm 또는 EmbeddedObject 하위 클래스에서 지원하는 기본 유형 중 하나일 수 있습니다. 매핑된 유형에 대해 둘 이상의 데이터를 저장해야 하는 경우 EmbeddedObject 하위 클래스를 사용할 수 있습니다. 예를 들어 CGPoint 를 저장할 수 있습니다.

    // Define the storage object. A type used for custom mappings
    // does not have to be used exclusively for custom mappings,
    // and more than one type can map to a single embedded object
    // type.
    class CGPointObject: EmbeddedObject {
        @Persisted var double: x
        @Persisted var double: y
    }
    
    // Define the mapping. This mapping isn't failable, as the
    // data stored in the Realm can always be interpreted as a
    // CGPoint.
    extension CGPoint: CustomPersistable {
        typealias PersistedType = CGPointObject
        init(persistedValue: CGPointObject) {
            self.init(x: persistedValue.x, y: persistedValue.y)
        }
        var persistableValue: PersistedType {
            CGPointObject(value: [x, y])
        }
    }
    
    class PointModel: Object {
        // Note that types which are mapped to embedded objects do
        // not have to be optional (but can be).
        @Persisted var point: CGPoint
        @Persisted var line: List<CGPoint>
    }
    

    쿼리는 사용자 지정 지속 가능 유형이 아닌 지속형 유형에 대해 수행됩니다. 쿼리에 전달되는 값은 지속형 유형 또는 사용자 지정 지속 가능 유형일 수 있습니다. 내장된 객체에 매핑되는 사용자 지정 지속 가능 유형의 경우 멤버별 동등성이 사용됩니다. 예를 들어 realm.objects(PointModel.self).where { $0.point == CGPoint(x: 1, y: 2) }"point.x == 1 AND point.y == 2" 와 동일합니다.

    더 보기

    선언

    스위프트

    public protocol CustomPersistable : _CustomPersistable
  • Realm이 지원하는 유형과 매핑할 수 있는 유형입니다.

    이 프로토콜은 init(persistedValue:) init?(persistedValue:) 이라는 점을 제외하고 CustomPersistable 와 동일합니다.

    FailableCustomPersistable 유형은 Optional이 아닌 컨텍스트에서는 강제로 래핑 해제되고 Optional 컨텍스트에서는 nil 로 축소됩니다. 즉, URL로 변환할 수 없는 값이 있는 경우 @Persisted var url: URL 속성을 읽으면 래핑되지 않은 실패 예외가 발생하고 Persisted var url: URL? 에서 읽으면 nil 을 반환합니다.

    더 보기

    선언

    스위프트

    public protocol FailableCustomPersistable : _CustomPersistable
  • Realm 이벤트에 사용자 지정 표현이 있는 유형입니다.

    기본적으로 객체는 모든 속성을 포함하는 내장 규칙을 사용하여 JSON으로 직렬화됩니다. 이벤트에서 클래스가 직렬화되는 방식을 사용자 지정하려면 이 프로토콜을 준수한다고 선언하고 customEventRepresentation() 을(를) 정의할 수 있습니다.

    더 보기

    선언

    스위프트

    @objc(RLMCustomEventRepresentable)
    public protocol CustomEventRepresentable
  • MongoCollection.watch() 스트림의 변경 사항을 구독하는 데 사용되는 위임입니다.

    더 보기

    선언

    스위프트

    public protocol ChangeEventDelegate : AnyObject
  • Realm 객체에 저장할 수 있는 열거형 유형입니다.

    Int로 지원되는 @objc 열거형만 Realm 객체에 저장할 수 있으며 열거형 유형은 이 프로토콜을 명시적으로 준수해야 합니다. 예를 들면 다음과 같습니다.

    @objc enum MyEnum: Int, RealmEnum {
       case first = 1
       case second = 2
       case third = 7
    }
    
    class MyModel: Object {
       @objc dynamic enumProperty = MyEnum.first
       let optionalEnumProperty = RealmOptional<MyEnum>()
    }
    

    선언

    스위프트

    public protocol RealmEnum : RealmOptionalType, _RealmSchemaDiscoverable
  • RealmOptional 을 매개변수화할 수 있는 유형을 설명하는 프로토콜입니다.

    선언

    스위프트

    public protocol RealmOptionalType : _ObjcBridgeable
  • @Persisted 및 Realm collection과 함께 사용할 수 있는 열거형 유형입니다.

    Realm에서 열거형을 유지하려면 원본 값이 있어야 하며 Realm이 저장할 수 있는 유형의 원본 값이 있어야 합니다. 또한 Swift는 암시적으로 이를 허용하지 않으므로 열거형은 이 프로토콜을 준수하는 것으로 명시적으로 표시해야 합니다.

    enum IntEnum: Int, PersistableEnum {
       case first = 1
       case second = 2
       case third = 7
    }
    enum StringEnum: String, PersistableEnum {
       case first = "a"
       case second = "b"
       case third = "g"
    }
    

    Realm에 유효한 열거형 멤버가 아닌 값이 포함된 경우(예: 다른 동기화 클라이언트가 작성한 값 중 어떤 값이 유효한지 동의하지 않는 경우) 선택적 열거형 속성은 nil 을(를) 반환하고 선택적이 아닌 속성을 반환합니다. 프로세스를 중단합니다.

    선언

    스위프트

    public protocol PersistableEnum : MinMaxType, RealmEnum, _PersistableInsideOptional, _RealmCollectionValueInsideOptional, CaseIterable, Comparable, RawRepresentable where Self.RawValue : Comparable
  • 인덱싱할 수 있는 유형입니다.

    이 프로토콜은 태그에 불과하며 추가 유형을 준수한다고 선언하면 컴파일 타임 오류가 아닌 런타임 오류가 발생할 뿐입니다.

    선언

    스위프트

    @_marker
    public protocol _Indexable
  • 객체의 기본 키로 만들 수 있는 유형입니다.

    이 프로토콜은 태그에 불과하며 추가 유형을 준수한다고 선언하면 컴파일 타임 오류가 아닌 런타임 오류가 발생할 뿐입니다.

    선언

    스위프트

    @_marker
    public protocol _PrimaryKey

ProjectionObservable

키 경로 collection 애그리게이션

  • 모든 숫자 유형에 대한 태그 프로토콜.

    선언

    스위프트

    public protocol _QueryNumeric : _RealmSchemaDiscoverable
  • String 와 호환되는 모든 유형에 대한 태그 프로토콜입니다.

    선언

    스위프트

    public protocol _QueryString : _QueryBinary
  • Binary 와 호환되는 모든 유형에 대한 태그 프로토콜입니다.

    선언

    스위프트

    public protocol _QueryBinary

알림

  • Realm에서 가져올 수 있는 객체 - Realm 객체 또는 프로젝션

    선언

    스위프트

    public protocol RealmFetchable : RealmCollectionValue
  • Realm 목록, MutableSet, 맵 또는 결과에 저장할 수 있는 유형입니다.

    추가 유형을 이 프로토콜을 준수한다고 선언해도 실제로 작동하지는 않습니다. Realm에 값을 저장하는 방법에 대한 로직은 대부분 Swift로 구현되어 있지 않으며, 현재 더 많은 유형을 지원하는 확장 메커니즘도 없습니다.

    선언

    스위프트

    public protocol RealmCollectionValue : _HasPersistedType, Hashable where Self.PersistedType : RealmCollectionValue
  • RealmPropertyType 을 매개변수화할 수 있는 유형을 설명하는 프로토콜입니다.

    선언

    스위프트

    public protocol RealmPropertyType : _ObjcBridgeable, _RealmSchemaDiscoverable

MinMaxType

  • 최소값 및 최대값 API와 함께 사용할 수 있는 속성 유형입니다.

    ~를 참조하세요.

    min(ofProperty:), max(ofProperty:)

    선언

    스위프트

    @_marker
    public protocol MinMaxType

AddableType

  • 합계 및 평균값 API와 함께 사용할 수 있는 속성 유형입니다.

    ~를 참조하세요.

    sum(ofProperty:), average(ofProperty:)

    선언

    스위프트

    @_marker
    public protocol AddableType
  • 직접 정렬하거나 구별할 수 있는 속성 유형입니다.

    ~를 참조하세요.

    sum(ascending:), distinct()

    선언

    스위프트

    @_marker
    public protocol SortableType
  • 정렬하거나 구별할 수 있는 속성이 있는 유형입니다.

    선언

    스위프트

    @_marker
    public protocol KeypathSortable
  • RealmSectionedResult SectionedResultsResultSection 간에 공통된 속성과 메서드를 정의합니다.

    더 보기

    선언

    스위프트

    public protocol RealmSectionedResult : ThreadConfined, Equatable, RandomAccessCollection

ObservedResults

  • @ObservedResults 속성 래퍼와 함께 사용할 수 있는 유형입니다. Realm 객체 또는 프로젝션의 하위 클래스입니다. ObservedResults의 init 메서드를 전문화하기 위해 만들어졌습니다.

    선언

    스위프트

    @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
    public protocol _ObservedResultsValue : RealmCollectionValue
  • ThreadConfined 을(를) 준수하는 유형의 객체는 Realm에서 관리할 수 있으며, 이를 통해 스레드별 Realm 인스턴스에 바인딩됩니다. managed 객체를 스레드 간에 전달하려면 명시적으로 내보내고 가져와야 합니다.

    이 프로토콜을 준수하는 객체의 managed 인스턴스는 ThreadSafeReference(to:) 생성자에 전달하여 스레드 간 전송을 위한 참고로 변환할 수 있습니다.

    Realm에서 정의한 유형만 이 프로토콜을 유의미하게 준수할 수 있으며, 이를 준수하려고 시도하는 새 클래스를 정의해도 ThreadSafeReference 에서 작동하지 않습니다.

    더 보기

    선언

    스위프트

    public protocol ThreadConfined