结构体
以下结构在全局范围内可用。
-
该结构体通过以下方式在 Swift 中启用 RLMObjects 的序列式枚举:
查看更多RLMCollection.makeIterator
声明
Swift
public struct RLMCollectionIterator : IteratorProtocol
-
此结构体通过以下方式在 Swift 中启用 RLMDictionary 的序列式枚举:
查看更多RLMDictionary.makeIterator
声明
Swift
public struct RLMDictionaryIterator : IteratorProtocol
-
一个
Realm
实例(也称为“Realm”)代表一个 Realm 数据库。Realm 可以存储在磁盘上(请参阅
init(path:)
)或内存中(请参阅Configuration
)。Realm
实例在内部缓存,构造等效的Realm
对象(例如,通过使用相同的路径或标识符)产生的开销有限。如果您特别希望确保销毁
Realm
实例(例如,如果您希望打开 Realm,检查某些属性,然后可能删除 Realm 文件并重新打开它),请将使用 Realm 文件的代码放在autoreleasepool {}
内,并确保没有其他强引用对其进行强引用。警告
警告 未冻结的RLMRealm
实例受线程限制,不能跨线程或调度队列共享。 尝试这样做会导致抛出异常。 您必须在要与Realm交互的每个线程或队列上获取RLMRealm
的实例。 在获取RLMRealm
实例时,可以通过显式传入队列来将 Realm 限制为调度队列,而不是其打开所在的线程。 如果不这样做,尝试在分派到同一队列的多个区块中使用同一实例可能会失败,因为队列并不总是在同一线程上运行。声明
Swift
@frozen public struct Realm
extension Realm: Equatable
-
LinkingObjects
是一种自动更新的container类型。它表示通过属性关系链接到其所属模型对象的零个或多个对象。LinkingObjects
可以使用与List<Element>
和Results<Element>
相同的谓词进行查询。LinkingObjects
始终反映当前线程上的 Realm 的当前状态,包括在当前线程上的写事务(write transaction)期间。唯一的例外是使用for...in
枚举时,该枚举将始终枚举开始枚举时存在的链接对象,即使其中一些对象在枚举期间被删除或修改为不再链接到目标对象。 。
查看更多LinkingObjects
只能用作Object
模型上的属性。 这种类型的属性必须声明为let
且不能为dynamic
。声明
Swift
@frozen public struct LinkingObjects<Element> where Element : ObjectBase, Element : RealmCollectionValue
extension LinkingObjects: RealmSubscribable
extension LinkingObjects: RealmCollection
-
Results
是 Realm 中从对象查询返回的自动更新container类型。Results
可以使用与List<Element>
相同的谓词进行查询,并且可以链式查询以进一步筛选查询结果。Results
始终反映当前线程上的 Realm 的当前状态,包括在当前线程上的写事务(write transaction)期间。唯一的例外是使用for...in
枚举时,该枚举将始终枚举开始枚举时与查询匹配的对象,即使其中一些对象在枚举期间被删除或修改为被筛选器排除。Results
首次访问时延迟求值;它们仅在请求查询结果时才运行查询。 这意味着链接多个临时Results
来对数据进行排序和筛选不会执行任何不必要的中间状态处理工作。评估结果或添加通知块后,系统会立即使结果保持最新,并尽可能在背景线程上完成保持最新的工作。
结果实例无法直接实例化。
查看更多声明
Swift
@frozen public struct Results<Element> : Equatable where Element : RealmCollectionValue
extension Results: RealmSubscribable
extension Results: RealmCollection
extension Results: Encodable where Element: Encodable
-
声明
Swift
public struct AnyRealmCollection<Element> : RealmCollection, UntypedCollection where Element : RealmCollectionValue
extension AnyRealmCollection: RealmSubscribable
-
封装 Realm 通知的订阅。
查看更多声明
Swift
@available(macOS 10.15, watchOS 6.0, iOS 13.0, iOSApplicationExtension 13.0, macOSApplicationExtension 10.15, tvOS 13.0, *) @frozen public struct ObservationSubscription : Subscription
-
封装 Realm AsyncOpenTask 的订阅。
查看更多声明
Swift
@available(macOS 10.15, watchOS 6.0, iOS 13.0, iOSApplicationExtension 13.0, macOSApplicationExtension 10.15, tvOS 13.0, *) @frozen public struct AsyncOpenSubscription : Subscription
-
保存元素在 Map 中的偏移量的容器类型。
查看更多声明
Swift
public struct MapIndex
-
用于在 Map 中保存单个键值条目的容器。 这用于元组无法表示为通用参数的情况。
查看更多声明
Swift
public struct SingleMapEntry<Key, Value> : _RealmMapValue, Hashable where Key : _MapKey, Value : RealmCollectionValue
-
Migration
实例封装了旨在促进模式迁移的信息。更新 Realm 的版本时,
查看更多Migration
实例会传递到用户定义的MigrationBlock
区块中。 此实例提供对新旧数据库模式、Realm 中的对象的访问,并提供在迁移期间修改 Realm 的功能。声明
Swift
@frozen public struct Migration
-
声明
Swift
@frozen public struct PropertyChange
-
声明
Swift
@frozen public struct ObjectSchema : CustomStringConvertible
extension ObjectSchema: Equatable
-
Property
实例表示由对象模式上下文中的 Realm 托管的属性。此类属性可能会持久保存在 Realm 文件中,也可能会根据 Realm 中的其他数据进行计算。使用 Realm 时,属性实例允许执行迁移和内省数据库模式。
属性实例映射到核心数据库中的列。
查看更多声明
Swift
@frozen public struct Property : CustomStringConvertible
extension Property: Equatable
-
查看更多RealmCollection
实例的迭代器。声明
Swift
@frozen public struct RLMIterator<Element> : IteratorProtocol where Element : RealmCollectionValue
-
查看更多RealmKeyedCollection
实例的迭代器。声明
Swift
@frozen public struct RLMMapIterator<Element> : IteratorProtocol where Element : _RealmMapValue
-
Schema
实例表示由 Realm 托管的对象模式的collection。使用 Realm 时,
Schema
实例允许执行迁移和内省数据库模式。模式映射到核心数据库中的collection。
查看更多声明
Swift
@frozen public struct Schema : CustomStringConvertible
extension Schema: Equatable
-
查看更多SortDescriptor
存储键路径和排序顺序以与sorted(sortDescriptors:)
一起使用。 它与NSSortDescriptor
类似,但仅支持可由 Realm 查询引擎高效运行的功能子集。声明
Swift
@frozen public struct SortDescriptor
extension SortDescriptor: CustomStringConvertible
extension SortDescriptor: Equatable
extension SortDescriptor: ExpressibleByStringLiteral
-
用于实例化可观察对象的属性包装器类型。
通过将
@StateRealmObject
属性应用于属性声明并提供符合doc://com.apple.documentation/documentation的初始值,在SwiftUI/View
、SwiftUI/App
或SwiftUI/Scene
中创建状态 Realm 对象/Combine/ObservableObject 协议:@StateRealmObject var model = DataModel()
SwiftUI 仅为声明该对象的结构体的每个实例创建该对象的新实例一次。 当可观察的 Realm 对象的已发布属性发生变化时,SwiftUI 会更新任何视图中依赖于这些属性的部分。如果非托管,则将从对象本身读取属性,否则将从底层 Realm 读取。 对该值的更改将异步更新视图:
Text(model.title) // Updates the view any time `title` changes.
您可以将状态对象传递给具有
SwiftUI/ObservedRealmObject
属性的属性。使用
$
操作符获取状态对象属性之一的SwiftUI/Binding
。 如果要创建与对象属性之一的双向连接,请使用绑定。 例如,您可以让SwiftUI/Toggle
控制存储在模型中名为isEnabled
的布尔值:Toggle("Enabled", isOn: $model.isEnabled)
这会将修改后的
查看更多isEnabled
属性写入model
对象的 Realm。声明
Swift
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) @propertyWrapper public struct StateRealmObject<T> : DynamicProperty where T : RealmSubscribable, T : ThreadConfined, T : Equatable
-
声明
Swift
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) @propertyWrapper public struct ObservedResults<ResultType> : DynamicProperty, BoundCollection where ResultType : RealmSwiftObject, ResultType : ObjectKeyIdentifiable
-
声明
Swift
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) @propertyWrapper public struct ObservedRealmObject<ObjectType> : DynamicProperty where ObjectType : ObservableObject, ObjectType : RealmSubscribable, ObjectType : ThreadConfined, ObjectType : Equatable
-
查看更多SyncConfiguration
表示旨在与MongoDB Realm同步的 Realm 的配置参数。声明
Swift
@frozen public struct SyncConfiguration
-
提供接口的结构,用于使用提供的名称和参数调用MongoDB Realm函数。
user.functions.sum([1, 2, 3, 4, 5]) { sum, error in guard case let .int64(value) = sum else { print(error?.localizedDescription) } assert(value == 15) }
动态成员名称(上例中为
查看更多sum
)与函数名称直接关联。 第一个参数是要提供给函数的BSONArray
参数。 第二个也是最后一个参数是函数调用完成时要调用的完成处理程序。 此处理程序在非主全局DispatchQueue
上执行。声明
Swift
@dynamicMemberLookup @frozen public struct Functions
-
要在线程之间传递的对象,其中包含对其线程限制对象的线程安全引用。
要在不同线程上解析目标 Realm 的线程安全引用,请传递给
Realm.resolve(_:)
。警告
ThreadSafeReference
对象最多必须解析一次。 无法解析ThreadSafeReference
将导致 Realm 的源版本被固定,直到引用被解除分配。注意
首选短期
ThreadSafeReference
,因为源 Realm 版本的数据将保留,直到所有引用都已解析或解除分配。声明
Swift
@frozen public struct ThreadSafeReference<Confined> where Confined : ThreadConfined