MutableSet
public final class MutableSet<Element> : RLMSwiftCollectionBase where Element : RealmCollectionValue
extension MutableSet: ObservableObject, RealmSubscribable
extension MutableSet: RealmCollection
extension MutableSet: Decodable where Element: Decodable
extension MutableSet: Encodable where Element: Encodable
MutableSet
是 Realm 中的 container 类型,用于定义以不同值作为对象的多对多关系。
与 Swift 的Set
一样, MutableSet
是一种泛型类型,会根据其存储的类型进行参数化。 它可以是Object
子类或以下类型之一: Bool
、 Int
、 Int8
、 Int16
、 Int32
、 Int64
、 Float
、 Double
、 String
、 Data
、 Date
、 Decimal128
和ObjectId
(及其可选版本)
与 Swift 的原生collection不同, MutableSet
是引用类型,只有当托管它们的 Realm 以只读方式打开时,它们才是不可变的。
可以使用与Results<Element>
相同的谓词对 MutableSet 进行过滤和排序。
在Object
子类上定义的MutableSet
类型的属性必须声明为let
,并且不能为dynamic
。
-
管理设立的Realm ,如果设立为非托管集合,则为
nil
。声明
Swift
public var realm: Realm? { get }
-
指示是否无法再访问该集。
声明
Swift
public var isInvalidated: Bool { get }
-
创建一个
MutableSet
,用于保存类型为Element
的 Realm 模型对象。声明
Swift
public override init()
-
返回此 MutableSet 中的对象数量。
声明
Swift
public var count: Int { get }
-
返回一个
Array
,其中包含对集合的每个对象使用key
调用valueForKey(_:)
的结果。声明
Swift
@nonobjc public func value(forKey key: String) -> [AnyObject]
-
返回一个
Array
,其中包含对集合的每个对象使用keyPath
调用valueForKeyPath(_:)
的结果。声明
Swift
@nonobjc public func value(forKeyPath keyPath: String) -> [AnyObject]
参数
keyPath
所需值属性的键路径。
-
setValue(_:forKey:)
使用指定的value
和 在集合的每个对象上调用key
。警告
只能在写事务(write transaction)期间调用此方法。
声明
Swift
public override func setValue(_ value: Any?, forKey key: String)
参数
value
对象值。
key
应在每个对象上设置其值的属性的名称。
-
返回一个布尔值,指示 Set 是否包含给定对象。
声明
Swift
public func contains(_ object: Element) -> Bool
参数
object
要在 MutableSet 中查找的元素。
-
返回一个布尔值,该值指示此集是否为给定集的子集。
声明
Swift
public func isSubset(of possibleSuperset: MutableSet<Element>) -> Bool
参数
object
另一个要比较的 MutableSet。
-
返回一个布尔值,指示此集是否与另一个给定集相交。
声明
Swift
public func intersects(_ otherSet: MutableSet<Element>) -> Bool
参数
object
另一个要比较的 MutableSet。
-
返回包含设立中已排序对象的
Results
。对象根据给定键路径的值进行排序。 示例,要根据
age
属性对一设立Student
从新到旧进行排序,您可以调用students.sorted(byKeyPath: "age", ascending: true)
。警告
MutableSet 只能按布尔值、
Date
、NSDate
、单精度和双精度点、整数和string类型的属性进行排序。声明
Swift
public func sorted(byKeyPath keyPath: String, ascending: Bool = true) -> Results<Element>
参数
keyPath
排序依据的键路径。
ascending
排序的方向。
-
返回包含设立中已排序对象的
Results
。警告
MutableSet 只能按布尔值、
Date
、NSDate
、单精度和双精度点、整数和string类型的属性进行排序。声明
Swift
public func sorted<S: Sequence>(by sortDescriptors: S) -> Results<Element> 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
期望获取最大值的属性的名称。
-
返回集合中所有对象的给设立属性值的总和。
警告
只能指定类型符合
AddableType
协议的属性。声明
Swift
public func sum<T>(ofProperty property: String) -> T where T : AddableType
参数
property
应对其值求和的属性的名称。
-
返回设立中所有对象的给定属性的平均值,如果设立为空,则返回
nil
。警告
只能指定类型符合
AddableType
协议的属性。声明
Swift
public func average<T>(ofProperty property: String) -> T? where T : AddableType
参数
property
应计算其平均值的属性的名称。
-
如果对象尚不存在,则将其插入到集合中。
警告
此方法只能在写事务(write transaction)期间调用。
声明
Swift
public func insert(_ object: Element)
参数
object
一个对象。
-
如果给定的对象序列不存在,则将其插入到集中。
警告
此方法只能在写事务(write transaction)期间调用。声明
Swift
public func insert<S>(objectsIn objects: S) where Element == S.Element, S : Sequence
-
删除集中的对象(如果存在)。 该对象不会从托管它的 Realm 中删除。
警告
此方法只能在写事务(write transaction)期间调用。
声明
Swift
public func remove(_ object: Element)
参数
object
要删除的对象。
-
从集合中删除所有对象。 对象不会从托管它们的 Realm 中删除。
警告
此方法只能在写事务(write transaction)期间调用。声明
Swift
public func removeAll()
-
使用此集合和给定序列共有的元素就地对该集合进行突变。
警告
此方法只能在写事务(write transaction)期间调用。
声明
Swift
public func formIntersection(_ other: MutableSet<Element>)
参数
other
另一套。
-
就地更改集合并从此集合中删除给定集合的元素。
警告
此方法只能在写事务(write transaction)期间调用。
声明
Swift
public func subtract(_ other: MutableSet<Element>)
参数
other
另一套。
-
将给定序列的元素插入到集合中。
警告
此方法只能在写事务(write transaction)期间调用。
声明
Swift
public func formUnion(_ other: MutableSet<Element>)
参数
other
另一套。
-
注册一个区块,以便在每次collection更改时调用。
该区块将与初始结果一起异步调用,然后在每次写事务(write transaction)后再次调用,这会更改collection中的任何对象或collection中的哪些对象。
传递给区块的
change
参数以collection内索引的形式报告在每个写事务(write transaction)期间添加、删除或修改了哪些对象。有关所提供变更信息的更多信息,以及如何使用这些信息来更新UITableView
的示例,请参阅RealmCollectionChange
文档。调用区块时,collection将进行全面求值且是最新的,只要不在同一线程上执行写事务(write transaction)或显式调用
realm.refresh()
,访问该collection就永远不会执行阻塞工作。如果未指定队列,则将通过标准事件循环传递通知,因此当事件循环被其他活动阻塞时无法传递通知。如果给出了队列,则将通知传递到该队列。 当无法立即传递通知时,可以将多个通知合并为一个通知。 这可以包括初始collection的通知。
例如,以下代码在添加通知块后立即执行写事务(write transaction),因此没有机会首先传递初始通知。因此,初始通知将反映写事务后 Realm 的状态。
let results = realm.objects(Dog.self) print("dogs.count: \(dogs?.count)") // => 0 let token = dogs.observe { changes in switch changes { case .initial(let dogs): // Will print "dogs.count: 1" print("dogs.count: \(dogs.count)") break case .update: // Will not be hit in this example break case .error: break } } try! realm.write { let dog = Dog() dog.name = "Rex" person.dogs.insert(dog) } // end of run loop execution context
只要您希望将更新发送到区块,就必须保留返回的令牌。 要停止接收更新,请对令牌调用
invalidate()
。警告
在写事务(write transaction)期间或当包含的 Realm 为只读时,无法调用此方法。
声明
Swift
public func observe(on queue: DispatchQueue? = nil, _ block: @escaping (RealmCollectionChange<MutableSet>) -> Void) -> NotificationToken
参数
queue
用于接收通知的串行调度队列。 如果为
nil
,则通知将传递到当前线程。block
发生更改时要调用的区块。
返回值
只要您希望传递更新,就必须持有的令牌。
-
声明
Swift
public var isFrozen: Bool { get }
-
声明
Swift
public func freeze() -> MutableSet
-
声明
Swift
public func thaw() -> MutableSet?
-
返回 MutableSet 中包含的对象的人类可读描述。
声明
Swift
@objc public override var description: String { get }
-
每次collection更改时发出 Void 的发布者。
尽管有这个名称,但它实际上是在collection发生更改后发出的。
声明
Swift
public var objectWillChange: RealmPublishers.WillChange<MutableSet> { get }
-
存储在设立中的对象的类型。
声明
Swift
public typealias ElementType = Element
-
返回一个
RLMIterator
,它产生MutableSet
中的连续元素。声明
Swift
public func makeIterator() -> RLMIterator<Element>
-
非空collection中第一个元素的位置。与空collection中的 endIndex 相同。
声明
Swift
public var startIndex: Int { get }
-
集合的“超过末尾”位置。 endIndex 不是下标的有效参数,但始终可以通过零次或多次应用程序 successor() 从 startIndex 访问 endIndex。
声明
Swift
public var endIndex: Int { get }
-
声明
Swift
public func index(after i: Int) -> Int
-
声明
Swift
public func index(before i: Int) -> Int
-
警告
MutableSet 上不保证顺序。 实施订阅是为了方便起见,不应依赖。声明
Swift
public subscript(position: Int) -> Element { get }
-
警告
MutableSet 上不保证顺序。first
是为了方便而实施的,不应依赖该值。声明
Swift
public var first: Element? { get }
-
返回设立中的最小值,如果设立为空,则返回
nil
。声明
Swift
public func min() -> Element?
-
返回设立中的最大值,如果设立为空,则返回
nil
。声明
Swift
public func max() -> Element?
-
返回设立中值的总和。
声明
Swift
public func sum() -> Element
-
返回设立中值的平均值,如果设立为空,则返回
nil
。声明
Swift
public func average<T>() -> T? where T : AddableType
-
声明
Swift
public convenience init(from decoder: Decoder) throws
-
声明
Swift
public func encode(to encoder: Encoder) throws