Map
public final class Map<Key, Value> : RLMSwiftCollectionBase where Key : _MapKey, Value : RealmCollectionValue
extension Map: ObservableObject, RealmSubscribable
extension Map: Sequence
extension Map: RealmKeyedCollection
マップは、サポートされている Realm タイプを保存するために使用されるキー値のストレージ コンテナです。
マップは、保存するタイプにパラメータ化されるジェネリックタイプです。 これは、オブジェクト サブクラスまたは次のいずれかのタイプになります: ブール、Int、Int8、Int16、Int32、Int64、浮動小数点数、 double 、 string 、Data、Date、Decimal128、 ObjectId (およびこれらの任意バージョン)
注意
Object
を除く上記タイプの任意バージョンは、同期されていない Realm でのみサポートされます。
マップはキーとして string のみをサポートします。
Swift のネイティブ コレクションとは異なり、 Map
は参照型であり、それを管理する Realm が読み取り専用として開かれている場合にのみ不変です。
Results<Value>
と同じ述語でマップをフィルタリングおよびソートすることができます。
Object
サブクラスで定義されているMap
型のプロパティは、 let
として宣言する必要があります。また、 dynamic
にすることはできません。
-
マップを管理する Realm、またはマップが管理されていない場合は
nil
。宣言
Swift
public var realm: Realm? { get }
-
マップがアクセスできなくなっているかどうかを示します。
宣言
Swift
public var isInvalidated: Bool { get }
-
このマップ内のすべてのキーを返します。
宣言
Swift
public var keys: [Key] { get }
-
このマップ内のすべての値を返します。
宣言
Swift
public var values: [Value] { get }
-
タイプ
Value
の Realm モデル オブジェクトを保持するMap
を作成します。宣言
Swift
public override init()
-
このマップ内のキーと値のペアの数を返します。
宣言
Swift
@objc public var count: Int { get }
-
指定されたキーのマップに保存されている値をアップデートし、キーが存在しない場合は新しいキーと値のペアを追加します。
注意
注: マップに追加される値が非管理オブジェクトで、かつマップが管理されている場合、その非管理オブジェクトは Realm に追加されます。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
宣言
Swift
public func updateValue(_ value: Value, forKey key: Key)
パラメーター
value
値のキーパス述語。
forKey
並べ替える方向。
-
指定されたキーとそれに関連付けられたオブジェクトを、キーがマップ内に存在する場合にのみ削除します。 キーが存在しない場合、マップは変更されません。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。宣言
Swift
public func removeObject(for key: Key)
-
マップからすべてのオブジェクトを削除します。 オブジェクトは、それらを管理する Realm から削除されません。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。宣言
Swift
public func removeAll()
-
指定されたキーの値を返します。または、サブスクリプトを割り当てに使用する場合は、キーの値を設定します。
注意
注: マップに追加される値が非管理オブジェクトで、かつマップが管理されている場合、その非管理オブジェクトは Realm に追加されます。
注意
注: キーに割り当てられている値が
nil
の場合、そのキーはマップから削除されます。警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
宣言
Swift
public subscript(key: Key) -> Value? { get set }
パラメーター
key
キー。
-
マップ内に存在する場合は、指定されたキーの
AnyObject
のタイプを返します。宣言
Swift
@objc public func object(forKey key: AnyObject) -> AnyObject?
パラメーター
key
値が必要なプロパティへのキー。
-
マップ内に存在する場合は、指定されたキーの
Value
のタイプを返します。キー値のコーディングを使用する場合、キーは string である必要があることに注意してください。
宣言
Swift
@nonobjc public func value(forKey key: String) -> AnyObject?
パラメーター
key
値が必要なプロパティへのキー。
-
マップ内に存在する場合は、指定されたキーの
Value
のタイプを返します。宣言
Swift
@nonobjc public func value(forKeyPath keyPath: String) -> AnyObject?
パラメーター
keyPath
値が必要なプロパティへのキー。
-
指定されたキーと値のペアをマップに追加するか、指定されたキーがすでに存在する場合は更新します。
警告
このメソッドは、書込みトランザクション中にのみ呼び出すことができます。
宣言
Swift
public override func setValue(_ value: Any?, forKey key: String)
パラメーター
value
オブジェクト値。
key
各オブジェクトに値を設定するプロパティの名前。
-
マップにキーと値のペアが指定された述語を満たすかどうかを示すブール値を返します。
宣言
Swift
public func contains(where predicate: @escaping (_ key: Key, _ value: Value) -> Bool) -> Bool
パラメーター
where
指定されたマップのいずれかのキーペアが一致を表すかどうかをテストする包含。
-
マップ内のオブジェクトを含む
Results
をソートされた状態で返します。オブジェクトは、指定されたキー パスの値に基づいてソートされます。 たとえば、
Student
のマップをage
プロパティに基づいて、小さいものから古い順に並べ替えるには、students.sorted(byKeyPath: "age", ascending: true)
を呼び出します。警告
辞書は、ブール値、
Date
、NSDate
、単一および倍精度浮動小数点、整数、および string 型のプロパティでのみソートできます。宣言
Swift
public func sorted(byKeyPath keyPath: String, ascending: Bool = true) -> Results<Value>
パラメーター
keyPath
ソートするキー パス。
ascending
並べ替える方向。
-
マップ内のオブジェクトを含む
Results
をソートされた状態で返します。警告
マップの は、ブール値、
Date
、NSDate
、単一および倍精度浮動小数点、整数、および string 型のプロパティでのみソートできます。詳細は、次を参照してください:
宣言
Swift
public func sorted<S: Sequence>(by sortDescriptors: S) -> Results<Value> where S.Iterator.Element == SortDescriptor
-
コレクション内のすべてのオブジェクト間で指定されたプロパティの最小(最小)値を返します。マップが空の場合は
nil
を返します。警告
MinMaxType
プロトコルに準拠するタイプのプロパティのみを指定できます。宣言
Swift
public func min<T>(ofProperty property: String) -> T? where T : MinMaxType
パラメーター
property
最小値が必要なプロパティの名前。
-
コレクション内のすべてのオブジェクト間で指定されたプロパティの最大値(最高値)を返します。マップが空の場合は
nil
を返します。警告
MinMaxType
プロトコルに準拠するタイプのプロパティのみを指定できます。宣言
Swift
public func max<T>(ofProperty property: String) -> T? where T : MinMaxType
パラメーター
property
最小値が必要なプロパティの名前。
-
コレクション内のオブジェクトの指定された プロパティの合計を返します。マップが空の場合は
nil
です。警告
AddableType
プロトコルに準拠した型のプロパティ名のみを使用できます。宣言
Swift
public func sum<T>(ofProperty property: String) -> T where T : AddableType
パラメーター
property
合計を計算するための
AddableType
に準拠したプロパティの名前。 -
コレクション内のすべてのオブジェクトにわたる指定されたプロパティの平均値を返します。マップが空の場合は
nil
を返します。警告
AddableType
プロトコルに準拠するタイプのプロパティのみを指定できます。宣言
Swift
public func average<T>(ofProperty property: String) -> T? where T : AddableType
パラメーター
property
値を合計するプロパティの名前。
-
マップが変更されるたびに呼び出されるブロックを登録します。
ブロックは最初のマップとは非同期に呼び出され、マップ内のキーまたは値のいずれかを変更する書き込みトランザクションごとに再度呼び出されます。
ブロックに渡される
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
アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
invalidate()
を呼び出します。警告
このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。
宣言
Swift
public func observe(on queue: DispatchQueue?, _ block: @escaping (RealmMapChange<Map>) -> Void) -> NotificationToken
パラメーター
queue
通知を受信するシリアル ディスパッチ キュー。
nil
の場合、通知は現在のスレッドに配信されます。block
変更が発生するたびに呼び出されるブロック。
戻り値
更新を配信する限り保持する必要があるトークン。
-
Map
が固定されているかどうかを示します。凍結された
Map
は不変であり、どのスレッドからでもアクセスできます。 凍結されたMap
は、管理対象のライブMap
で-freeze
を呼び出すことで作成されます。 管理されていないMap
は固定されません。宣言
Swift
public var isFrozen: Bool { get }
-
Map
の固定(不変)スナップショットを返します。固定されたコピーは、この
Map
に現在含まれているデータと同じデータを含む不変のMap
であり、含まれている Realm に書込み (write) が行われた場合は更新されません。 ライブMap
とは異なり、固定されたMap
にはどのスレッドからでもアクセスできます。警告
このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。警告
このメソッドは、管理対象のMap
でのみ呼び出せます。警告
Realm で書き込みトランザクションを実行中に固定されたMap
を長時間保持すると、Realm ファイルのサイズが大きくなる可能性があります。 詳しくは、RLMRealmConfiguration.maximumNumberOfActiveVersions
を参照してください。宣言
Swift
public func freeze() -> Map
-
この固定された
Map
のライブ バージョンを返します。このメソッドは、同じ固定された
Map
のライブ コピーへの参照を解決します。 ライブMap
で呼び出されると、 は自分自身を返します。宣言
Swift
public func thaw() -> Map?
-
マップに含まれるオブジェクトの人間が判読可能な説明を返します。
宣言
Swift
@objc public override var description: String { get }
-
コレクションが変更されるたびに Vid を発行する出版社。
名前に関係なく、コレクションが変更された後にこれが実際に発行します。
宣言
Swift
public var objectWillChange: RealmPublishers.WillChange<Map> { get }
-
Map
で連続する要素を生成するRLMMapIterator
を返します。宣言
Swift
public func makeIterator() -> RLMMapIterator<SingleMapEntry<Key, Value>>
-
マップ内の最小(最小)値を返します。マップが空の場合は
nil
を返します。宣言
Swift
public func min() -> Value?
-
マップ内の最大(最高)値を返します。マップが空の場合は
nil
を返します。宣言
Swift
public func max() -> Value?
-
マップの最小(最小)値を返します。マップが空の場合は
nil
を返します。宣言
Swift
public func min() -> Value.Wrapped?
-
マップの最大(最高)値を返します。マップが空の場合は
nil
を返します。宣言
Swift
public func max() -> Value.Wrapped?
-
マップ内の 値の合計を返します。
宣言
Swift
public func sum() -> Value
-
マップ内の値の平均を返します。マップが空の場合は
nil
を返します。宣言
Swift
public func average<T>() -> T? where T : AddableType
-
マップ内の 値の合計を返します。マップが空の場合は
nil
を返します。宣言
Swift
func sum() -> Value.Wrapped
-
コレクション内のすべての値の平均を返します。
宣言
Swift
func average<T>() -> T? where T : AddableType