프로토콜
다음 프로토콜은 전 세계적으로 사용할 수 있습니다.
-
RLMArray, RLMSet & RLMResults에 대한 반복자 지원을 정의하는 프로토콜입니다.
더 보기선언
Swift
public protocol _RLMCollectionIterator : Sequence
-
RLMDictionary에 대한 반복자 지원을 정의하는 프로토콜입니다.
선언
Swift
public protocol _RLMDictionaryIterator
-
동기화된 Realm의 파티션 값으로 사용할 수 있는 유형을 표시하는 태그 프로토콜입니다.
선언
Swift
public protocol PartitionValue : Sendable
-
BSON 값을 나타내는 프로토콜.
다음의 사항도 참조하세요.
bsonspec.org선언
Swift
public protocol BSON : PartitionValue, Equatable
-
Realm 객체의 기본 ID를 정의하는 프로토콜입니다.
객체 하위 클래스가 이 프로토콜을 준수한다고 선언하면 Realm 객체에서 작동하는
Identifiable
id
에 대한 기본 구현을 제공할 수 있습니다.// Automatically conforms to `Identifiable` class MyObjectType: Object, ObjectKeyIdentifiable { // ... }
원하는 경우
더 보기Identifiable
를 수동으로 준수할 수도 있지만 managed 객체에는 객체의 메모리 주소를 사용할 수 없습니다 .선언
Swift
@available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public protocol ObjectKeyIdentifiable : Identifiable
-
valuePublisher()
또는changesetPublisher()
에 전달될 수 있는 유형입니다.선언
Swift
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) public protocol RealmSubscribable
-
선언
Swift
public protocol RealmCollection : RealmCollectionBase, Equatable where Self.Iterator == RLMIterator<Self.Element>
-
선언
Swift
public protocol RealmKeyedCollection : ThreadConfined, CustomStringConvertible, Sequence
-
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"
와 동일합니다.선언
Swift
public protocol CustomPersistable : _CustomPersistable
-
Realm이 지원하는 유형과 매핑할 수 있는 유형입니다.
이 프로토콜은
init(persistedValue:)
init?(persistedValue:)
이라는 점을 제외하고CustomPersistable
와 동일합니다.FailableCustomPersistable 유형은 Optional이 아닌 컨텍스트에서는 강제로 래핑 해제되고 Optional 컨텍스트에서는
더 보기nil
로 축소됩니다. 즉, URL로 변환할 수 없는 값이 있는 경우@Persisted var url: URL
속성을 읽으면 래핑되지 않은 실패 예외가 발생하고Persisted var url: URL?
에서 읽으면nil
을 반환합니다.선언
Swift
public protocol FailableCustomPersistable : _CustomPersistable
-
Realm 이벤트에 사용자 지정 표현이 있는 유형입니다.
기본적으로 객체는 모든 속성을 포함하는 내장 규칙을 사용하여 JSON으로 직렬화됩니다. 이벤트에서 클래스가 직렬화되는 방식을 사용자 지정하려면 이 프로토콜을 준수한다고 선언하고
더 보기customEventRepresentation()
을(를) 정의할 수 있습니다.선언
Swift
@objc(RLMCustomEventRepresentable) public protocol CustomEventRepresentable
-
더 보기MongoCollection.watch()
스트림의 변경 사항을 구독하는 데 사용되는 위임입니다.선언
Swift
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>() }
선언
Swift
public protocol RealmEnum : RealmOptionalType, _RealmSchemaDiscoverable
-
RealmOptional
을 매개변수화할 수 있는 유형을 설명하는 프로토콜입니다.선언
Swift
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
을(를) 반환하고 선택적이 아닌 속성을 반환합니다. 프로세스를 중단합니다.선언
Swift
public protocol PersistableEnum : MinMaxType, RealmEnum, _PersistableInsideOptional, _RealmCollectionValueInsideOptional, CaseIterable, Comparable, RawRepresentable where Self.RawValue : Comparable
-
인덱싱할 수 있는 유형입니다.
이 프로토콜은 태그에 불과하며 추가 유형을 준수한다고 선언하면 컴파일 타임 오류가 아닌 런타임 오류가 발생할 뿐입니다.
선언
Swift
@_marker public protocol _Indexable
-
객체의 기본 키로 만들 수 있는 유형입니다.
이 프로토콜은 태그에 불과하며 추가 유형을 준수한다고 선언하면 컴파일 타임 오류가 아닌 런타임 오류가 발생할 뿐입니다.
선언
Swift
@_marker public protocol _PrimaryKey
-
선언
Swift
public protocol ProjectionObservable : AnyObject, ThreadConfined
-
모든 숫자 유형에 대한 태그 프로토콜.
선언
Swift
public protocol _QueryNumeric : _RealmSchemaDiscoverable
-
String
와 호환되는 모든 유형에 대한 태그 프로토콜입니다.선언
Swift
public protocol _QueryString : _QueryBinary
-
Binary
와 호환되는 모든 유형에 대한 태그 프로토콜입니다.선언
Swift
public protocol _QueryBinary
-
Realm에서 가져올 수 있는 객체 - Realm 객체 또는 프로젝션
선언
Swift
public protocol RealmFetchable : RealmCollectionValue
-
Realm 목록, MutableSet, 맵 또는 결과에 저장할 수 있는 유형입니다.
추가 유형을 이 프로토콜을 준수한다고 선언해도 실제로 작동하지는 않습니다. Realm에 값을 저장하는 방법에 대한 로직은 대부분 Swift로 구현되어 있지 않으며, 현재 더 많은 유형을 지원하는 확장 메커니즘도 없습니다.
선언
Swift
public protocol RealmCollectionValue : _HasPersistedType, Hashable where Self.PersistedType : RealmCollectionValue
-
RealmPropertyType
을 매개변수화할 수 있는 유형을 설명하는 프로토콜입니다.선언
Swift
public protocol RealmPropertyType : _ObjcBridgeable, _RealmSchemaDiscoverable
-
최소값 및 최대값 API와 함께 사용할 수 있는 속성 유형입니다.
~를 참조하세요.
min(ofProperty:)
,max(ofProperty:)
선언
Swift
@_marker public protocol MinMaxType
-
합계 및 평균값 API와 함께 사용할 수 있는 속성 유형입니다.
~를 참조하세요.
sum(ofProperty:)
,average(ofProperty:)
선언
Swift
@_marker public protocol AddableType
-
직접 정렬하거나 구별할 수 있는 속성 유형입니다.
~를 참조하세요.
sum(ascending:)
,distinct()
선언
Swift
@_marker public protocol SortableType
-
정렬하거나 구별할 수 있는 속성이 있는 유형입니다.
선언
Swift
@_marker public protocol KeypathSortable
-
더 보기RealmSectionedResult
SectionedResults
와ResultSection
간에 공통된 속성과 메서드를 정의합니다.선언
Swift
public protocol RealmSectionedResult : ThreadConfined, Equatable, RandomAccessCollection
-
@ObservedResults 속성 래퍼와 함께 사용할 수 있는 유형입니다. Realm 객체 또는 프로젝션의 하위 클래스입니다. ObservedResults의 init 메서드를 전문화하기 위해 만들어졌습니다.
선언
Swift
@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
에서 작동하지 않습니다.선언
Swift
public protocol ThreadConfined