클래스

다음 클래스는 전 세계적으로 사용할 수 있습니다.

  • 128비트 IEEE 754-2008 10진수 부동 소수점 숫자입니다.

    이 유형은 Swift의 내장 Decimal 유형과 비슷하지만 비트를 다르게 할당하므로 표현 가능 범위가 다릅니다. (NS)Decimal은 최대 38자리의 유효 숫자와 -128부터 127까지의 지수를 저장하는 반면, 이 유형은 최대 34자리의 유효 숫자와 지수를 -6143부터 6144까지 저장합니다.

    더 보기

    선언

    Swift

    @objc(RealmSwiftDecimal128)
    public final class Decimal128 : RLMDecimal128, Decodable, @unchecked Sendable
    extension Decimal128: BSON
    extension Decimal128: Encodable
    extension Decimal128: ExpressibleByIntegerLiteral
    extension Decimal128: ExpressibleByFloatLiteral
    extension Decimal128: ExpressibleByStringLiteral
    extension Decimal128: Comparable
    extension Decimal128: Numeric
    extension Decimal128: _QueryNumeric
    extension Decimal128: _RealmCollectionValueInsideOptional
    extension Decimal128: MinMaxType
    extension Decimal128: AddableType
    extension Decimal128: SortableType
  • 12바이트(대부분)의 고유 ObjectId입니다.

    ObjectId는 GUID 또는 UUID와 유사하며, 중앙 집중식 ID 생성기 없이도 객체를 고유하게 식별하는 데 사용할 수 있습니다. ObjectID는 다음으로 구성됩니다.

    1. 유닉스 시간 이후 ObjectId의 생성 시간을 초 단위로 측정하는 4바이트 타임스탬프입니다.
    2. 5바이트 임의 값
    3. 임의의 값으로 초기화된 3바이트 카운터입니다.

    ObjectId는 빠르게 생성하기 위한 것입니다. ObjectId 필드를 기준으로 정렬하면 일반적으로 객체가 생성 순서대로 정렬됩니다.

    더 보기

    선언

    Swift

    @objc(RealmSwiftObjectId)
    public final class ObjectId : RLMObjectId, Decodable, @unchecked Sendable
    extension ObjectId: BSON
    extension ObjectId: Encodable
    extension ObjectId: Comparable
    extension ObjectId: _RealmCollectionValueInsideOptional
  • List Realm에서 to-many 관계를 정의하는 데 사용되는 컨테이너 유형입니다.

    Swift의 Array 처럼 List 도 저장하는 유형에 따라 매개변수화되는 일반 유형입니다. 이 클래스는 Object 서브클래스이거나 다음 유형 중 하나일 수 있습니다: Bool, Int, Int8, Int16, Int32, Int64, Float, Double, String, Data, Date, Decimal128ObjectId (및 해당 옵션 버전)

    Swift의 네이티브 컬렉션과 달리 List는 참조 유형이며 collection을 managed하는 Realm이 읽기 전용으로 열린 경우에만 변경되지 않습니다.

    목록은 Results<Element> 과 동일한 조건자를 사용하여 필터링하고 정렬할 수 있습니다.

    더 보기

    선언

    Swift

    public final class List<Element> : RLMSwiftCollectionBase, RealmCollectionImpl where Element : RealmCollectionValue
    extension List: ObservableObject, RealmSubscribable
    extension List: MutableCollection
    extension List: Decodable where Element: Decodable
    extension List: Encodable where Element: Encodable
  • MutableSet 은(는) 고유한 값을 객체로 사용하는 to-many 관계를 정의하는 데 사용되는 Realm의 container 유형입니다.

    Swift의 Set 처럼 MutableSet 도 저장하는 유형에 따라 매개변수화되는 일반 유형입니다. 이 클래스는 Object 서브클래스이거나 다음 유형 중 하나일 수 있습니다: Bool, Int, Int8, Int16, Int32, Int64, Float, Double, String, Data, Date, Decimal128ObjectId (및 해당 옵션 버전)

    Swift의 네이티브 컬렉션과 달리 MutableSet는 참조 유형이며 collection을 managed하는 Realm이 읽기 전용으로 열린 경우에만 변경되지 않습니다.

    MutableSet는 Results<Element> 과 동일한 조건자를 사용하여 필터링하고 정렬할 수 있습니다.

    더 보기

    선언

    Swift

    public final class MutableSet<Element> : RLMSwiftCollectionBase, RealmCollectionImpl where Element : RealmCollectionValue
    extension MutableSet: ObservableObject, RealmSubscribable
    extension MutableSet: Decodable where Element: Decodable
    extension MutableSet: Encodable where Element: Encodable
  • Map

    맵은 지원되는 Realm 유형을 저장하는 데 사용되는 키-값 저장 container입니다.

    지도는 저장하는 유형에 따라 매개변수화된 일반 유형입니다. 이는 Object 하위 클래스이거나 다음 유형 중 하나일 수 있습니다: Bool, Int, Int8, Int16, Int32, Int64, Float, Double, String, Data, Date, Decimal128, ObjectId (및 해당 옵션 버전)

    참고

    Object제외한 위 유형의 선택 버전은 동기화되지 않은 Realm에서만 지원됩니다.

    지도는 키로 String 만 지원합니다. Realm에서는 사전 키 내에서 . 또는 $ 문자를 사용할 수 없습니다.

    Swift의 네이티브 collection과 달리 Mapcollection은 참고 유형이며 collection을 managed하는 Realm이 읽기 전용으로 열린 경우에만 변경되지 않습니다.

    맵은 Results<Value> 과 동일한 조건자를 사용하여 필터링 및 정렬할 수 있습니다.

    더 보기

    선언

    Swift

    public final class Map<Key, Value> : RLMSwiftCollectionBase where Key : _MapKey, Value : RealmCollectionValue
    extension Map: ObservableObject, RealmSubscribable
    extension Map: Sequence
    extension Map: RealmKeyedCollection
    extension Map: Decodable where Key: Decodable, Value: Decodable
    extension Map: Encodable where Key: Encodable, Value: Encodable
  • RealmOptional 인스턴스는 Int, Float, DoubleBool 와 같이 Swift에서 @objc 로 직접 선언할 수 없는 유형에 대한 선택적 값을 나타냅니다.

    RealmOptional 인스턴스에 저장된 기본 값을 변경하려면 인스턴스의 value 속성을 변경합니다.

    더 보기

    선언

    Swift

    @available(*, deprecated, renamed: "RealmProperty", message: "RealmOptional<T> has been deprecated, use RealmProperty<T?> instead.")
    public final class RealmOptional<Value> : RLMSwiftValueStorage where Value : RealmOptionalType
    extension RealmOptional: Equatable where Value: Equatable
    extension RealmOptional: Codable where Value: Codable, Value: _RealmSchemaDiscoverable

ProjectionObservable

  • Projection 원래 Realm Object 또는 EmbeddedObject 의 경량 모델입니다. Projection 을(를) 뷰 모델로 사용하여 상용구를 최소화할 수 있습니다.

    사용 예시:

    public class Person: Object {
        @Persisted var firstName = ""
        @Persisted var lastName = ""
        @Persisted var address: Address?
        @Persisted var friends: List<Person>
        @Persisted var reviews: List<String>
    }
    
    public class Address: EmbeddedObject {
        @Persisted var city: String = ""
        @Persisted var country = ""
    }
    
    class PersonProjection: Projection<Person> {
        @Projected(\Person.firstName) var firstName
        @Projected(\Person.lastName.localizedUppercase)
        var lastNameCaps
        @Projected(\Person.address.city) var homeCity
        @Projected(\Person.friends.projectTo.firstName)
        var friendsFirstName: ProjectedCollection<String>
    }
    

    ### 지원되는 속성 유형

    프로젝션은 여러 가지 방법으로 원래 @Persisted 속성을 변환할 수 있습니다.

    • Passthrough - Projection의 속성은 원본 객체와 동일한 이름 및 유형을 갖습니다. PersonProjection.firstName 을(를) 참조하세요.
    • Rename - 프로젝션의 속성은 새 이름만 포함된 원본 객체와 동일한 유형을 갖습니다.
    • Keypath resolution - 프로젝션된 Object 의 특정 속성에 액세스할 수 있습니다. PersonProjection.lastNameCapsPersonProjection.homeCity 를 참조하세요.
    • Collection mapping - List MutableSet또는 ObjectEmbeddedObject및 는 기본 값의 collection으로 프로젝션될 수 있습니다. PersonProjection.friendsFirstName 를 참조하세요.
    • Exclusion - 프로젝션 모델에 정의되지 않은 원본 Realm 객체의 모든 속성은 프로젝션에서 제외됩니다. 해당 속성에 발생한 변경 사항은 Projection 에 대한 변경 알림을 trigger하지 않습니다. 여전히 원본 Object 또는 EmbeddedObject 에 액세스하고 직접 알림을 관찰할 수 있습니다.

    참고

    즉, 각 @Persisted 속성은 동일한 프로젝션 클래스에서 서로 다른 방식으로 @Projected 수 있습니다. 각 Object 또는 EmbeddedObject 는 동일하거나 다른 클래스의 여러 프로젝션을 한 번에 가질 수 있습니다.

    쿼리하기

    Realm의 objects(_:) 또는 프로젝션 클래스의 init(projecting:) 를 호출하여 Realm에서 특정 유형의 모든 프로젝션을 조회할 수 있습니다.

    let projections = realm.object(PersonProjection.self)
    let personObject = realm.create(Person.self)
    let singleProjection = PersonProjection(projecting: personObject)
    
    더 보기

    선언

    Swift

    open class Projection<Root> : RealmCollectionValue, ProjectionObservable where Root : RLMObjectBase, Root : RealmCollectionValue, Root : ThreadConfined
    extension Projection: KeypathSortable
    extension Projection: ThreadConfined where Root: ThreadConfined
    extension Projection: ObservableObject, RealmSubscribable where Root: ThreadConfined
  • RealmProperty 인스턴스는 지원되는 유형에 대한 다형성 값을 나타냅니다.

    RealmProperty 인스턴스에 저장된 기본 값을 변경하려면 인스턴스의 value 속성을 변경합니다.

    참고

    RealmProperty 은(는) Realm 객체에서 @objc dynamic 으)로 선언해서는 안 됩니다. 대신 let 를 사용합니다.
    더 보기

    선언

    Swift

    public final class RealmProperty<Value> : RLMSwiftValueStorage where Value : RealmPropertyType
    extension RealmProperty: Equatable where Value: Equatable
    extension RealmProperty: Codable where Value: Codable

ThreadSafe 속성 래퍼

  • 스레드 간에 전달될 수 있는 속성 래퍼 유형입니다.

    @ThreadSafe 속성에는 기본 래핑된 값에 대한 스레드 안전 참고가 포함되어 있습니다. 이 참고는 래핑된 값에 액세스되는 스레드로 확인됩니다. 속성에 액세스할 때마다 새로운 스레드로부터 안전 참고가 생성됩니다.

    경고

    이 속성 래퍼는 수명이 긴 객체의 속성에 사용하면 안 됩니다. @ThreadSafe 속성에는 사용 중인 Realm의 소스 버전을 고정할 수 있는 ThreadSafeReference 이(가) 포함되어 있습니다. 즉, 이 속성 래퍼는 비동기적으로 전달된 블록에 캡처되는 함수 인수와 로컬 변수에 더 적합합니다 .

    ~를 참조하세요.

    ThreadSafeReference

    ~를 참조하세요.

    ThreadConfined

    선언

    Swift

    @propertyWrapper
    public final class ThreadSafe<T> where T : ThreadConfined
    extension ThreadSafe: @unchecked Sendable