名单

public final class List<Element> : RLMSwiftCollectionBase, RealmCollectionImpl where Element : RealmCollectionValue
extension List: ObservableObject, RealmSubscribable
extension List: MutableCollection
extension List: Decodable where Element: Decodable
extension List: Encodable where Element: Encodable

List 是 Realm 中用于定义多个 container 关系的类型。

与 Swift 的Array一样, List是一种泛型类型,会根据其存储的类型进行参数化。 它可以是Object子类或以下类型之一: BoolIntInt8Int16Int32Int64FloatDoubleStringDataDateDecimal128ObjectId (及其可选版本)

与 Swift 的原生collection不同, List是引用类型,只有当托管它们的 Realm 以只读方式打开时,它们才是不可变的。

可以使用与Results<Element>相同的谓词对列表进行过滤和排序。

初始化器

  • 创建一个List ,用于保存类型为Element的 Realm 模型对象。

    声明

    迅速

    public override init()

对象检索

  • 返回位于给定索引处的对象 (get),或替换位于给定索引处的对象 (set)。

    警告

    您只能在写事务(write transaction)期间设置对象。

    声明

    迅速

    public subscript(position: Int) -> Element { get set }

    参数

    index

    要检索或替换的对象的索引。

KVC

  • 返回一个Array ,其中包含对集合的每个对象使用key调用valueForKey(_:)的结果。

    声明

    迅速

    @nonobjc
    public func value(forKey key: String) -> [AnyObject]
  • 返回一个Array ,其中包含对集合的每个对象使用keyPath调用valueForKeyPath(_:)的结果。

    声明

    迅速

    @nonobjc
    public func value(forKeyPath keyPath: String) -> [AnyObject]

    参数

    keyPath

    所需值属性的键路径。

变更

  • 将给定对象追加到列表末尾。

    如果该对象由与接收器不同的 Realm 托管,则会创建一个副本并将其添加到托管接收器的 Realm 中。

    警告

    此方法只能在写事务(write transaction)期间调用。

    声明

    迅速

    public func append(_ object: Element)

    参数

    object

    一个对象。

  • 将给定序列中的对象追加到列表末尾。

    警告

    此方法只能在写事务(write transaction)期间调用。

    声明

    迅速

    public func append<S>(objectsIn objects: S) where Element == S.Element, S : Sequence
  • 在给定索引处插入一个对象。

    警告

    此方法只能在写事务(write transaction)期间调用。

    警告

    如果使用无效索引调用此方法,则会引发异常。

    声明

    迅速

    public func insert(_ object: Element, at index: Int)

    参数

    object

    一个对象。

    index

    要插入对象的索引。

  • 删除给定索引处的对象。 该对象不会从托管它的 Realm 中删除。

    警告

    此方法只能在写事务(write transaction)期间调用。

    警告

    如果使用无效索引调用此方法,则会引发异常。

    声明

    迅速

    public func remove(at index: Int)

    参数

    index

    要删除对象的索引。

  • 从列表中删除所有对象。 对象不会从管理它们的 Realm 中删除。

    警告

    此方法只能在写事务(write transaction)期间调用。

    声明

    迅速

    public func removeAll()
  • 用新对象替换给定索引处的对象。

    警告

    此方法只能在写事务(write transaction)期间调用。

    警告

    如果使用无效索引调用此方法,则会引发异常。

    声明

    迅速

    public func replace(index: Int, object: Element)

    参数

    index

    要替换的对象的索引。

    object

    一个对象。

  • 将给定源索引处的对象移动到给定目标索引处。

    警告

    此方法只能在写事务(write transaction)期间调用。

    警告

    如果使用无效索引调用此方法,则会引发异常。

    声明

    迅速

    public func move(from: Int, to: Int)

    参数

    from

    要移动的对象的索引。

    to

    from处的对象应移动到的索引。

  • 交换列表中给定索引处的对象。

    警告

    此方法只能在写事务(write transaction)期间调用。

    警告

    如果使用无效索引调用此方法,则会引发异常。

    声明

    迅速

    public func swapAt(_ index1: Int, _ index2: Int)

    参数

    index1

    应替换索引index2处对象的对象索引。

    index2

    应替换索引index1处对象的对象索引。

  • 返回列表中包含的对象的人类可读描述。

    声明

    迅速

    public override var description: String { get }

名单

  • 每次collection更改时发出 Void 的发布者。

    尽管有这个名称,但它实际上是在collection发生更改发出的。

    声明

    迅速

    public var objectWillChange: RealmPublishers.WillChange<List> { get }
  • 将给定的subRange元素替换为newElements

    声明

    迅速

    public func replaceSubrange<C: Collection, R>(_ subrange: R, with newElements: C)
        where C.Iterator.Element == Element, R: RangeExpression, List<Element>.Index == R.Bound

    参数

    subrange

    要替换的元素范围。

    newElements

    要插入到列表中的新元素。

MutableCollection 一致性,范围可替换collection模拟

  • 声明

    迅速

    public typealias SubSequence = Slice<List>
  • 返回给定范围内的对象 (get),或用新对象替换给定范围内的对象 (set)。

    警告

    对象只能在写事务(write transaction)期间设置。

    声明

    迅速

    public subscript(bounds: Range<Int>) -> SubSequence { get set }

    参数

    index

    要检索或替换的对象的索引。

  • 从列表开头删除指定数量的对象。 对象不会从托管它们的 Realm 中删除。

    警告

    此方法只能在写事务(write transaction)期间调用。

    声明

    迅速

    public func removeFirst(_ number: Int = 1)
  • 从列表末尾删除指定数量的对象。 对象不会从托管它们的 Realm 中删除。

    警告

    此方法只能在写事务(write transaction)期间调用。

    声明

    迅速

    public func removeLast(_ number: Int = 1)
  • 将给定集合中的项目插入列表中的给定位置。

    警告

    此方法只能在写事务(write transaction)期间调用。

    声明

    迅速

    public func insert<C>(contentsOf newElements: C, at i: Int) where Element == C.Element, C : Collection
  • 从列表中删除给定范围的对象。

    警告

    此方法只能在写事务(write transaction)期间调用。

    声明

    迅速

    public func removeSubrange<R>(_ boundsExpression: R) where R : RangeExpression, R.Bound == Int

适用于以下位置: ElementDecodable

适用于ElementObjectBaseRealmCollectionValue

  • projectTo 会将List Objects或 的原始List EmbeddedObjects映射到ProjectedCollection

    例如:

     class Person: Object {
         @Persisted var dogs: List<Dog>
     }
     class PersonProjection: Projection<Person> {
         @Projected(\Person.dogs.projectTo.name) var dogNames: ProjectedCollection<String>
     }
    

    在此代码中, Person的犬列表将通过projectTo投影到犬名称列表

    声明

    迅速

    public var projectTo: CollectionElementMapper<Element> { get }