RealmKeyedCollection

public protocol RealmKeyedCollection : ThreadConfined, CustomStringConvertible, Sequence

検索、フィルタリング、並べ替え、操作可能なObjectの同種のキーと値のコレクション。

プロパティ

  • マップを管理する Realm、またはマップが管理されていない場合はnil

    宣言

    Swift

    var realm: Realm? { get }
  • マップがアクセスできなくなっているかどうかを示します。

    宣言

    Swift

    var isInvalidated: Bool { get }
  • このマップ内のキーと値のペアの数を返します。

    宣言

    Swift

    var count: Int { get }
  • マップに含まれるオブジェクトの人間が判読可能な説明。

    宣言

    Swift

    var description: String { get }

ミューテーション

  • 指定されたキーの辞書に保存されている値をアップデートし、キーが存在しない場合は新しいキーと値のペアを追加します。

    注意

    注: 辞書に追加される値が非管理オブジェクトで、かつ辞書が管理されている場合は、その非管理オブジェクトが Realm に追加されます。

    警告

    このメソッドは、書込みトランザクション中にのみ呼び出されます。

    宣言

    Swift

    func updateValue(_ value: Value, forKey key: Key)

    パラメーター

    value

    値のキーパス述語。

    forKey

    並べ替える方向。

  • 指定されたキーとそれに関連付けられたオブジェクトを削除します(キーが辞書に存在する場合のみ)。 キーが存在しない場合、辞書は変更されません。

    警告

    このメソッドは、書込みトランザクション中にのみ呼び出されます。

    宣言

    Swift

    func removeObject(for key: Key)
  • 辞書からすべてのオブジェクトを削除します。 オブジェクトは、それらを管理する Realm から削除されません。

    警告

    このメソッドは、書込みトランザクション中にのみ呼び出されます。

    宣言

    Swift

    func removeAll()
  • 指定されたキーの値を返します。または、サブスクリプトを割り当てに使用する場合は、キーの値を設定します。

    注意

    注: 辞書に追加される値が非管理オブジェクトで、かつ辞書が管理されている場合は、その非管理オブジェクトが Realm に追加されます。

    注意

    注: キーに割り当てられている値がnilの場合、そのキーは辞書から削除されます。

    警告

    このメソッドは、書込みトランザクション中にのみ呼び出されます。

    宣言

    Swift

    subscript(key: Key) -> Value? { get set }

    パラメーター

    key

    キー。

KVM

  • マップ内に存在する場合は、指定されたキーのValueのタイプを返します。

    キー値のコーディングを使用する場合、キーは string である必要があることに注意してください。

    宣言

    Swift

    func value(forKey key: String) -> AnyObject?

    パラメーター

    key

    値が必要なプロパティへのキー。

  • マップ内に存在する場合は、指定されたキーのValueのタイプを返します。

    宣言

    Swift

    func value(forKeyPath keyPath: String) -> AnyObject?

    パラメーター

    keyPath

    値が必要なプロパティへのキー。

  • 指定されたキーと値のペアを辞書に追加するか、指定されたキーがすでに存在する場合は更新します。

    警告

    このメソッドは、書込みトランザクション中にのみ呼び出すことができます。

    宣言

    Swift

    func setValue(_ value: Any?, forKey key: String)

    パラメーター

    value

    オブジェクト値。

    key

    各オブジェクトに値を設定するプロパティの名前。

フィルタリング

  • 指定された述語と一致するすべての値を含むResultsを返します。

    注意

    これにより、キーと値のペアではなく、辞書内の値が返されます。

    宣言

    Swift

    func filter(_ predicate: NSPredicate) -> Results<Value>

    パラメーター

    predicate

    値をフィルタリングする述語。

  • マップにキーと値のペアが指定された述語を満たすかどうかを示すブール値を返します。

    宣言

    Swift

    func contains(where predicate: @escaping (_ key: Key, _ value: Value) -> Bool) -> Bool

    パラメーター

    where

    指定されたマップのいずれかのキーペアが一致を表すかどうかをテストする包含。

ソート

  • 辞書内のオブジェクトをソートされた状態で含むResultsを返します。

    オブジェクトは、 値に基づいてソートされます。 たとえば、 Dateの辞書を新しいセットから最も古い順に並べ替えるには、 dates.sorted(ascending: true)を呼び出します。

    宣言

    Swift

    func sorted(ascending: Bool) -> Results<Value>

    パラメーター

    ascending

    並べ替える方向。

  • 辞書内のオブジェクトをソートされた状態で含むResultsを返します。

    オブジェクトは、指定されたキー パスの値に基づいてソートされます。 たとえば、 ageプロパティに基づいて、 Studentの辞書を最も小さいものから最も古い順に並べ替えるには、 students.sorted(byKeyPath: "age", ascending: true)を呼び出します。

    警告

    辞書は、ブール値、 DateNSDate 、単一および倍精度浮動小数点、整数、および string 型のプロパティでのみソートできます。

    宣言

    Swift

    func sorted(byKeyPath keyPath: String, ascending: Bool) -> Results<Value>

    パラメーター

    keyPath

    ソートするキー パス。

    ascending

    並べ替える方向。

  • 辞書内のオブジェクトをソートされた状態で含むResultsを返します。

    警告

    辞書は、ブール値、 DateNSDate 、単一および倍精度浮動小数点、整数、および string 型のプロパティでのみソートできます。

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

    sorted(byKeyPath:ascending:)

    宣言

    Swift

    func sorted<S: Sequence>(by sortDescriptors: S) -> Results<Value>
        where S.Iterator.Element == SortDescriptor
  • この辞書内のすべてのキーを返します。

    宣言

    Swift

    var keys: [Key] { get }
  • 辞書内のすべての値を返します。

    宣言

    Swift

    var values: [Value] { get }

集計操作

  • コレクション内のすべてのオブジェクト間で指定されたプロパティの最小(最小)値を返します。辞書が空の場合はnilを返します。

    警告

    MinMaxTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func min<T>(ofProperty property: String) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType

    パラメーター

    property

    最小値が必要なプロパティの名前。

  • 辞書内のすべてのオブジェクト間で指定されたプロパティの最大値(最高値)を返します。辞書が空の場合はnilを返します。

    警告

    MinMaxTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func max<T>(ofProperty property: String) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType

    パラメーター

    property

    最小値が必要なプロパティの名前。

  • 辞書内のオブジェクトの指定された プロパティの合計を返します。辞書が空の場合はnilです。

    警告

    AddableTypeプロトコルに準拠した型のプロパティ名のみを使用できます。

    宣言

    Swift

    func sum<T>(ofProperty property: String) -> T where T : _HasPersistedType, T.PersistedType : AddableType

    パラメーター

    property

    合計を計算するためのAddableTypeに準拠したプロパティの名前。

  • 辞書内のすべてのオブジェクトにわたる指定されたプロパティの平均値を返します。辞書が空の場合はnilです。

    警告

    AddableTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func average<T>(ofProperty property: String) -> T? where T : _HasPersistedType, T.PersistedType : AddableType

    パラメーター

    property

    値を合計するプロパティの名前。

notifications

  • observe(keyPaths:on:_:) デフォルトの実装

    辞書が変更されるたびに呼び出されるブロックを登録します。

    ブロックは最初の辞書とは非同期に呼び出され、辞書内のキーまたは値のいずれかを変更する書き込みトランザクションごとに再度呼び出されます。

    ブロックに渡されるchangeパラメータは、各書込みトランザクション中に追加、削除、または変更されたキーと値のペアを、辞書内のキーの形式で報告します。

    ブロックが呼び出される時点で、辞書は完全に評価され、最新の状態になります。同じスレッドで書込みトランザクションを実行したり、 realm.refresh()を明示的に呼び出したりしない限り、アクセスはブロッキング実行されない限り、動作する。

    キューが指定されていない場合、通知は標準の実行ループを介して配信されるため、実行ループが他のアクティビティによってブロックされている間は通知を配信できません。 キューが指定されている場合、代わりにそのキューに通知が配信されます。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには、初期コレクションの通知を含めることができます。

    たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。

    let myStringMap = myObject.stringMap
    print("myStringMap.count: \(myStringMap?.count)") // => 0
    let token = myStringMap.observe { changes in
        switch changes {
        case .initial(let myStringMap):
            // Will print "myStringMap.count: 1"
            print("myStringMap.count: \(myStringMap.count)")
           print("Dog Name: \(myStringMap["nameOfDog"])") // => "Rex"
            break
        case .update:
            // Will not be hit in this example
            break
        case .error:
            break
        }
    }
    try! realm.write {
        myStringMap["nameOfDog"] = "Rex"
    }
    // end of run loop execution context
    

    キー パスが指定されていない場合、ブロックは、すべてのオブジェクト プロパティとネストされたリンクされたオブジェクトのプロパティの挿入、変更、または削除時に実行されます。 キー パスが指定されている場合、指定されたキー パスでのみ発生する変更に対してブロックが呼び出されます。 たとえば、次の場合:

    class Dog: Object {
        @Persisted var name: String
        @Persisted var age: Int
        @Persisted var toys: List<Toy>
    }
    // ...
    let dogs = myObject.mapOfDogs
    let token = dogs.observe(keyPaths: ["name"]) { changes in
        switch changes {
        case .initial(let dogs):
           // ...
        case .update:
           // This case is hit:
           // - after the token is initialized
           // - when the name property of an object in the
           // collection is modified
           // - when an element is inserted or removed
           //   from the collection.
           // This block is not triggered:
           // - when a value other than name is modified on
           //   one of the elements.
        case .error:
            // ...
        }
    }
    // end of run loop execution context
    
    • 確認されたキー パスが ["toys.brand"] の場合、コレクションの要素の いずれか にある toys リストへの挿入または削除によってブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 値を変更すると、ブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 以外の値を変更しても、ブロックはtriggerされません。 監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。
    • 上記の例で ["toys"] キー パスが確認された場合、コレクション内の任意の要素の toys リストへの挿入、削除、または変更によってブロックがtriggerされます。 このコレクション内の にリンクされているToy Dogの値を変更しても、ブロックはtrigger され ません 。監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。

    注意

    個別のキー パスでフィルタリングされる同じオブジェクト上の複数の通知トークンは、排他的にフィルタリングされません。 1 つの通知トークンに対して 1 つのキーパスの変更が満たされた場合、そのオブジェクトのすべての通知トークン ブロックが実行されます。

    アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンでinvalidate()を呼び出します。

    警告

    このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。

    注意

    keyPaths パラメーターはコレクション型のオブジェクト プロパティを参照し、コレクション内の特定のキーと値のペアは参照しません

    デフォルトの実装

    宣言

    Swift

    func observe(keyPaths: [String]?,
                 on queue: DispatchQueue?,
                 _ block: @escaping (RealmMapChange<Self>) -> Void) -> NotificationToken

    パラメーター

    keyPaths

    キーパス配列に含まれるプロパティのみが変更されたときにブロックをtriggerします。 nilの場合、オブジェクトのプロパティ変更に対して通知が配信されます。 有効な プロパティに対応していないstringキー パスでは例外がスローされます。 リンクされたプロパティの詳細については、上記の説明を参照してください。

    queue

    通知を受信するシリアル ディスパッチ キュー。 nilの場合、通知は現在のスレッドに配信されます。

    block

    変更が発生するたびに呼び出されるブロック。

    戻り値

    更新を配信する限り保持する必要があるトークン。

凍結されたオブジェクト

  • このコレクションが固定されている場合は を返します

    宣言

    Swift

    var isFrozen: Bool { get }
  • このコレクションの固定(不変)スナップショットを返します。

    固定されたコピーは、このコレクションに現在含まれているデータと同じデータを含む不変のコレクションですが、含まれている Realm への書込み (write) が行われても更新されません。 ライブコレクションとは異なり、固定コレクションには任意のスレッドからアクセスできます。

    警告

    このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。

    警告

    Realm で書込みトランザクションを実行中に固定されたコレクションを長時間保持すると、Realm ファイルのサイズが大きくなる可能性があります。 詳しくは、 Realm.Configuration.maximumNumberOfActiveVersionsを参照してください。

    宣言

    Swift

    func freeze() -> Self
  • この固定されたコレクションのライブ(可変)バージョンを返します。

    このメソッドは、同じ固定コレクションのライブ コピーへの参照を解決します。 ライブ コレクションで呼び出されると、 は自分自身を返します。

    宣言

    Swift

    func thaw() -> Self?

Self : RealmSubscribableで利用可能

Value : OptionalProtocolValue.Wrapped : ObjectBaseで利用可能

  • min(of:) 拡張メソッド

    コレクション内のすべてのオブジェクト間で指定されたプロパティの最小(最小)値を返します。コレクションが空の場合はnilを返します。

    警告

    MinMaxTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func min<T>(of keyPath: KeyPath<Value.Wrapped, T>) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType

    パラメーター

    keyPath

    最小値が必要なプロパティの keyPath 。

  • max(of:) 拡張メソッド

    コレクション内のすべてのオブジェクト間で指定されたプロパティの最大値(最高値)を返します。コレクションが空の場合はnilを返します。

    警告

    MinMaxTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func max<T>(of keyPath: KeyPath<Value.Wrapped, T>) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType

    パラメーター

    keyPath

    最小値が必要なプロパティの keyPath 。

  • sum(of:) 拡張メソッド

    コレクション内のオブジェクトの指定された プロパティの合計を返します。コレクションが空の場合はnilです。

    警告

    AddableTypeプロトコルに準拠した型のプロパティ名のみを使用できます。

    宣言

    Swift

    func sum<T>(of keyPath: KeyPath<Value.Wrapped, T>) -> T where T : _HasPersistedType, T.PersistedType : AddableType

    パラメーター

    keyPath

    合計を計算するためのAddableTypeに準拠したプロパティの keyPath 。

  • average(of:) 拡張メソッド

    コレクション内のすべてのオブジェクトにわたる指定されたプロパティの平均値を返します。コレクションが空の場合はnilを返します。

    警告

    AddableTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func average<T>(of keyPath: KeyPath<Value.Wrapped, T>) -> T? where T : _HasPersistedType, T.PersistedType : AddableType

    パラメーター

    keyPath

    値を合計する必要があるプロパティの keyPath 。

次の場所で利用可能: Value : OptionalProtocolValue.Wrapped : ObjectBaseValue.Wrapped : RealmCollectionValue

  • sorted(by:ascending:) 拡張メソッド

    コレクション内のオブジェクトを含むResultsをソートされた状態で返します。

    オブジェクトは、指定されたキー パスの値に基づいてソートされます。 たとえば、 Studentのコレクションをageプロパティに基づいて、小さいものから古い順に並べ替えるには、 students.sorted(byKeyPath: "age", ascending: true)を呼び出します。

    警告

    コレクションは、ブール値、DateNSDate、単一および倍精度浮動小数点、整数、およびstring型のプロパティでのみソートできます。

    宣言

    Swift

    func sorted<T>(by keyPath: KeyPath<Value.Wrapped, T>, ascending: Bool) -> Results<Value> where T : _HasPersistedType, T.PersistedType : SortableType

    パラメーター

    keyPath

    ソートするキー パス。

    ascending

    並べ替える方向。

Value.PersistedType : MinMaxTypeで利用可能

  • min() 拡張メソッド

    コレクションの最小(最小)値を返します。コレクションが空の場合はnilを返します。

    宣言

    Swift

    func min() -> Value?
  • max() 拡張メソッド

    コレクションの最大値(最高値)を返します。コレクションが空の場合はnilを返します。

    宣言

    Swift

    func max() -> Value?

Value.PersistedType : AddableTypeで利用可能

  • sum() 拡張メソッド

    コレクション内の 値の合計を返します。コレクションが空の場合はnilを返します。

    宣言

    Swift

    func sum() -> Value
  • average() 拡張メソッド

    コレクション内のすべての値の平均を返します。

    宣言

    Swift

    func average<T>() -> T? where T : _HasPersistedType, T.PersistedType : AddableType

Value.PersistedType : SortableTypeで利用可能

  • sorted(ascending:) デフォルトの実装

    デフォルトの実装

    コレクション内のオブジェクトを含むResultsをソートされた状態で返します。

    オブジェクトは、 値に基づいてソートされます。 たとえば、 Dateのコレクションを新しいセットから最も古い順に並べ替えるには、 dates.sorted(ascending: true)を呼び出します。

    宣言

    Swift

    func sorted(ascending: Bool = true) -> Results<Value>

    パラメーター

    ascending

    並べ替える方向。