オブジェクト
@objc(RealmSwiftObject)
open class Object : RLMObjectBase, RealmCollectionValue
extension Object: ObservableObject
extension Object: RealmSubscribable
extension Object: ThreadConfined
Object
は、Realm モデル オブジェクトを定義するために使用されるクラスです。
Realm では、 Object
をサブクラス化し、管理するプロパティを追加することでモデル クラスを定義します。 次に、 Object
クラスを直接使用するのではなく、カスタム サブクラスをインスタンス化して使用します。
class Dog: Object {
@objc dynamic var name: String = ""
@objc dynamic var adopted: Bool = false
let siblings = List<Dog>()
}
サポートされているプロパティの型
String
,NSString
Int
Int8
,Int16
,Int32
,Int64
Float
Double
Bool
Date
,NSDate
Data
,NSData
Decimal128
ObjectId
@objc enum
これはRealmEnum
に準拠しているとして削除されました。RealmOptional<Value>
(任意の数値プロパティ用)Object
サブクラス(多対 1 の関係をモデル化するため)EmbeddedObject
サブクラス、1 対 1 の関係を所有するモデル化List<Element>
、多対多の関係をモデル化する
String
、 NSString
、 Date
、 NSDate
、 Data
、 NSData
、 Decimal128
、 ObjectId
プロパティは任意として宣言できます。 Object
サブクラスとEmbeddedObject
サブクラスは、任意として宣言する必要があります。 Int
、 Int8
、 Int16
、 Int32
、 Int64
、 Float
、 Double
、 Bool
、列挙、およびList
プロパティは使用できません。 任意の数値を保存するには、代わりにRealmOptional<Int>
、 RealmOptional<Float>
、 RealmOptional<Double>
、またはRealmOptional<Bool>
を使用します。これは任意の数値をラップします。 リストはまったく任意のものにはできません。
List
とRealmOptional
を除くすべてのプロパティ型は、 @objc dynamic var
として宣言する必要があります。 List
プロパティとRealmOptional
プロパティは、非動的let
プロパティとして宣言する必要があります。 Swift lazy
プロパティは許可されていません。
Realm によって無視されるように構成されているプロパティには、上記でリストした制限はいずれも適用されないことに注意してください。
クエリ
objects(_:)
インスタンス メソッドを呼び出すと、Realm から特定のタイプのすべてのオブジェクトを検索できます。
関係
詳細については、「 Cocoa ガイド」を参照してください。
-
Realm オブジェクトの非マネージド インスタンスを作成します。
非マネージド オブジェクトをその Realm に追加するには、
Realm
インスタンスでadd(_:)
を呼び出します。詳細は、次を参照してください:
Realm().add(_:)
宣言
Swift
public override required init()
-
Realm オブジェクトの非マネージド インスタンスを作成します。
value
引数はオブジェクトにデータを入力するために使用されます。 キーと値に準拠したオブジェクト、NSJSONSerialization
のメソッドから返された配列または辞書、または管理されているプロパティごとに 1 つの要素を含むArray
にすることができます。 必須 プロパティが存在せず、それらのプロパティがデフォルト値で定義されていない場合は、例外がスローされます。value
引数としてArray
を渡す場合、すべてのプロパティが存在し、有効で、モデルで定義されたプロパティと同じ順序にある必要があります。非マネージド オブジェクトをその Realm に追加するには、
Realm
インスタンスでadd(_:)
を呼び出します。宣言
Swift
public convenience init(value: Any)
パラメーター
value
オブジェクトを入力するために使用される値。
-
オブジェクトを管理する Realm。オブジェクトが管理されていない場合は
nil
。宣言
Swift
public var realm: Realm? { get }
-
オブジェクトの管理対象プロパティを一覧表示するオブジェクト スキーマ。
宣言
Swift
public var objectSchema: ObjectSchema { get }
-
オブジェクトが無効になったためアクセスできなくなっているかどうかを示します。
オブジェクトを管理する Realm からオブジェクトが削除された場合、またはその Realm で
invalidate()
が呼び出された場合は、オブジェクトにアクセスできなくなります。 このプロパティは、キー値を観察できます。宣言
Swift
@objc dynamic open override var isInvalidated: Bool { get }
-
人間が判読可能なオブジェクトの説明。
宣言
Swift
open override var description: String { get }
-
このメソッドをオーバーライドして、プライマリキーとして使用するプロパティの名前を指定します。
プライマリキーとして指定できるのは、
String
とInt
のタイプのプロパティのみです。 プライマリキー プロパティでは、プロパティが設定されるたびに各値の一意性が強制されるため、マイナーなオーバーヘッドが発生します。 プライマリキー プロパティに対してインデックスが自動的に作成されます。宣言
Swift
@objc open class func primaryKey() -> String?
戻り値
プライマリキーとして指定されたプロパティの名前。または、モデルにプライマリキーがない場合は
nil
。 -
このメソッドをオーバーライドして、無視するプロパティの名前を指定します。 これらのプロパティは、オブジェクトを管理する Realm によって管理されません。
宣言
Swift
@objc open class func ignoredProperties() -> [String]
戻り値
無視するプロパティ名の配列。
-
インデックスを作成する必要があるプロパティのプロパティ名の配列を返します。
string 、整数、ブール値、
Date
、NSDate
プロパティのみがサポートされます。宣言
Swift
@objc open class func indexedProperties() -> [String]
戻り値
プロパティ名の配列。
-
指定された名前のプロパティの値を返すか設定します。
宣言
Swift
@objc open subscript(key: String) -> Any? { get set }
-
オブジェクトが変更されるたびに呼び出されるブロックを登録します。
ブロックは、オブジェクトを削除する、またはプロパティを既存の値に設定する自己割り当てを含む、オブジェクトの管理されているプロパティのいずれかを変更する各書込みトランザクションの後に非同期に呼び出されます。
異なるスレッドまたは異なるプロセスで実行される書込みトランザクションの場合、ブロックは管理 Realm が変更を含むバージョンに(自動)更新されたときに呼び出されますが、ローカルの書込みトランザクションでは、将来のある時点で呼び出されます書込みトランザクション (write transaction) がコミットされた場合。
キューが指定されていない場合、通知は標準の実行ループを介して配信されるため、実行ループが他のアクティビティによってブロックされている間は通知を配信できません。 キューが指定されている場合、代わりにそのキューに通知が配信されます。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。
List
やResults
とは異なり、新しい通知ブロックを追加した後に実行される初期コールバックはありません。この方法では、Realm によって管理されているオブジェクトのみを監視できます。 アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
invalidate()
を呼び出します。コールバック ブロック内で監視対象オブジェクトへの強力な参照をキャプチャしても安全です。 コールバックはオブジェクト自体ではなく返されたトークンによって保持されるため、保持サイクルがありません。
警告
このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。
宣言
Swift
public func observe<T: Object>(on queue: DispatchQueue? = nil, _ block: @escaping (ObjectChange<T>) -> Void) -> NotificationToken
パラメーター
queue
通知を受信するシリアル ディスパッチ キュー。
nil
の場合、通知は現在のスレッドに配信されます。block
オブジェクトに対する変更に関する情報を呼び出すブロック。
戻り値
更新を配信する限り保持する必要があるトークン。
-
2 つの Realm オブジェクトが同じかどうかを返します。
オブジェクトは同じ Realm によって管理され、データベース内の同じ基礎オブジェクトを指している場合にのみ、同じと見なされます。
注意
等価比較は
isEqual(_:)
によって実装されています。 オブジェクトタイプがプライマリキーで定義されている場合、isEqual(_:)
はこのメソッドと同じように動作します。 オブジェクトタイプがプライマリキーで定義されていない場合、isEqual(_:)
はオブジェクト ID を比較するためにNSObject
の動作を使用します。 このメソッドは、オブジェクトタイプがプライマリキーを定義するかどうかにかかわらず、データベースの等価性について 2 つのオブジェクトを比較するために使用できます。宣言
Swift
public func isSameObject(as object: Object?) -> Bool
パラメーター
object
レシーバーを比較するオブジェクト。
-
オブジェクトが変更されるたびに Vid を発行する出版社。
名前に関係なく、コレクションが変更された後にこれが実際に発行します。
宣言
Swift
public var objectWillChange: RealmPublishers.WillChange<Object> { get }
-
このオブジェクトが固定されているかどうかを示します。
詳細は、次を参照してください:
Object.freeze()
宣言
Swift
public var isFrozen: Bool { get }
-
このオブジェクトの固定(不変)スナップショットを返します。
固定されたコピーは、このオブジェクトが現在含まれているデータと同じデータを含む不変のオブジェクトですが、含まれている Realm に書込み (write) が行われた場合は更新されません。 ライブオブジェクトと違い、固定オブジェクトには任意のスレッドからアクセスできます。
警告
Realm で書込みトランザクションを実行中に固定されたオブジェクトを長時間保持すると、Realm ファイルのサイズが大きくなる可能性があります。 詳しくは、Realm.Configuration.maximumNumberOfActiveVersions
を参照してください。警告
このメソッドは、管理対象のオブジェクトでのみ呼び出せます。宣言
Swift
public func freeze() -> Self