クラス

次のクラスはグローバルに利用できます。

  • List は、対多関係を定義するために使用される Realm のコンテナ タイプです。

    Swift のArrayと同様に、 Listは、保存する型をパラメータ化するジェネリック型です。 これは、 Objectサブクラスまたは次のいずれかのタイプになります。 BoolIntInt8Int16Int32Int64FloatDoubleStringDataDateDecimal128ObjectId (およびこれらの任意バージョン)

    Swift のネイティブ コレクションとは異なり、 Listは参照型であり、それを管理する 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 は、オブジェクトとして個別の値を持つ対多の関係を定義するために使用される Realm のコンテナ タイプです。

    Swift のSetと同様に、 MutableSetは、保存する型をパラメータ化するジェネリック型です。 これは、 Objectサブクラスまたは次のいずれかのタイプになります。 BoolIntInt8Int16Int32Int64FloatDoubleStringDataDateDecimal128ObjectId (およびこれらの任意バージョン)

    Swift のネイティブ コレクションとは異なり、 MutableSetは参照型であり、それを管理する 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 タイプを保存するために使用されるキー値のストレージ コンテナです。

    マップは、保存するタイプにパラメータ化されるジェネリックタイプです。 これは、オブジェクト サブクラスまたは次のいずれかのタイプになります: ブール、Int、Int8、Int16、Int32、Int64、浮動小数点数、 double 、 string 、Data、Date、Decimal128、 ObjectId (およびこれらの任意バージョン)

    マップではキーとしてStringのみをサポートしています。 Realm では、辞書キー内で.または$文字の使用が禁止されています。

    Swift のネイティブ コレクションとは異なり、 Mapは参照型であり、それを管理する 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
  • 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: 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 の作成時間を UNIX エポックからの秒数で測定する 4 バイトのタイムスタンプ。
    2. 5 バイトのランダム値
    3. ランダム値に初期化された 3 バイトのカウンター。

    ObjectId は高速に生成されることを目的としています。 ObjectId フィールドでソートすると、オブジェクトは通常作成順にソートされます。

    詳細はこちら

    宣言

    Swift

    @objc(RealmSwiftObjectId)
    public final class ObjectId : RLMObjectId, Decodable, @unchecked Sendable
    extension ObjectId: Encodable
    extension ObjectId: Comparable
    extension ObjectId: _RealmCollectionValueInsideOptional
  • RealmOptionalインスタンスは、 IntFloatDoubleBoolなど、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>
    }
    

    Atlas でサポートされているプロパティの型

    プロジェクションは、元の@Persistedプロパティをいくつかの方法で変換できます。

    • Passthrough - Projectionのプロパティは、元のオブジェクトと同じ名前とタイプになります。 詳しくはPersonProjection.firstNameを参照してください。
    • Rename - プロジェクションのプロパティは、新しい名前を持つだけで元のオブジェクトと同じタイプになります。
    • Keypath resolution - プロジェクションされたObjectの特定のプロパティにアクセスできます。 詳しくは、 PersonProjection.lastNameCapsPersonProjection.homeCityを参照してください。
    • Collection mapping -List MutableSetまたはObject の とEmbeddedObject は、プリミティブ値のコレクションとしてプロジェクションできます。詳しくはPersonProjection.friendsFirstNameを参照してください。
    • Exclusion - プロジェクション モデルで定義されていない元の Realm オブジェクトのすべてのプロパティは、プロジェクションから除外されます。 これらのプロパティで変更が発生しても、Projection の変更通知はtriggerされません。 元のObjectまたはEmbeddedObjectに引き続きアクセスし、通知を直接確認できます。

    注意

    @Persistedプロパティは、同じプロジェクション クラス内で異なる方法で@Projectedになることができます。 各ObjectまたはEmbeddedObjectは、同じクラスまたは異なるクラスの複数のプロジェクションを一度に持つことができます。

    クエリ

    Realm から特定のタイプのすべてのプロジェクションを検索するには、Realm のobjects(_:)またはプロジェクションの クラスのinit(projecting:)を呼び出します。

    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プロパティには、使用中の Realm のソース バージョンを固定できるThreadSafeReferenceが含まれています。 つまり、このプロパティ ラッパーは、非同期にディスパッチされたブロックによってキャプチャされる関数引数とローカル変数に適しています

    詳細は、次を参照してください:

    ThreadSafeReference

    詳細は、次を参照してください:

    ThreadConfined

    宣言

    Swift

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