名单
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
子类或以下类型之一: Bool
、 Int
、 Int8
、 Int16
、 Int32
、 Int64
、 Float
、 Double
、 String
、 Data
、 Date
、 Decimal128
和ObjectId
(及其可选版本)
与 Swift 的原生collection不同, List
是引用类型,只有当托管它们的 Realm 以只读方式打开时,它们才是不可变的。
可以使用与Results<Element>
相同的谓词对列表进行过滤和排序。
-
创建一个
List
,用于保存类型为Element
的 Realm 模型对象。声明
Swift
public override init()
-
返回位于给定索引处的对象 (get),或替换位于给定索引处的对象 (set)。
警告
您只能在写事务(write transaction)期间设置对象。
声明
Swift
public subscript(position: Int) -> Element { get set }
参数
index
要检索或替换的对象的索引。
-
返回一个
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
所需值属性的键路径。
-
将给定对象追加到列表末尾。
如果该对象由与接收器不同的 Realm 托管,则会创建一个副本并将其添加到托管接收器的 Realm 中。
警告
此方法只能在写事务(write transaction)期间调用。
声明
Swift
public func append(_ object: Element)
参数
object
一个对象。
-
将给定序列中的对象追加到列表末尾。
警告
此方法只能在写事务(write transaction)期间调用。声明
Swift
public func append<S>(objectsIn objects: S) where Element == S.Element, S : Sequence
-
在给定索引处插入一个对象。
警告
此方法只能在写事务(write transaction)期间调用。
警告
如果使用无效索引调用此方法,则会引发异常。
声明
Swift
public func insert(_ object: Element, at index: Int)
参数
object
一个对象。
index
要插入对象的索引。
-
删除给定索引处的对象。 该对象不会从托管它的 Realm 中删除。
警告
此方法只能在写事务(write transaction)期间调用。
警告
如果使用无效索引调用此方法,则会引发异常。
声明
Swift
public func remove(at index: Int)
参数
index
要删除对象的索引。
-
从列表中删除所有对象。 对象不会从管理它们的 Realm 中删除。
警告
此方法只能在写事务(write transaction)期间调用。声明
Swift
public func removeAll()
-
用新对象替换给定索引处的对象。
警告
此方法只能在写事务(write transaction)期间调用。
警告
如果使用无效索引调用此方法,则会引发异常。
声明
Swift
public func replace(index: Int, object: Element)
参数
index
要替换的对象的索引。
object
一个对象。
-
将给定源索引处的对象移动到给定目标索引处。
警告
此方法只能在写事务(write transaction)期间调用。
警告
如果使用无效索引调用此方法,则会引发异常。
声明
Swift
public func move(from: Int, to: Int)
参数
from
要移动的对象的索引。
to
from
处的对象应移动到的索引。 -
交换列表中给定索引处的对象。
警告
此方法只能在写事务(write transaction)期间调用。
警告
如果使用无效索引调用此方法,则会引发异常。
声明
Swift
public func swapAt(_ index1: Int, _ index2: Int)
参数
index1
应替换索引
index2
处对象的对象索引。index2
应替换索引
index1
处对象的对象索引。 -
返回列表中包含的对象的人类可读描述。
声明
Swift
public override var description: String { get }
-
每次collection更改时发出 Void 的发布者。
尽管有这个名称,但它实际上是在collection发生更改后发出的。
声明
Swift
public var objectWillChange: RealmPublishers.WillChange<List> { get }
-
将给定的
subRange
元素替换为newElements
。声明
Swift
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
要插入到列表中的新元素。
-
声明
Swift
public typealias SubSequence = Slice<List>
-
返回给定范围内的对象 (get),或用新对象替换给定范围内的对象 (set)。
警告
对象只能在写事务(write transaction)期间设置。
声明
Swift
public subscript(bounds: Range<Int>) -> SubSequence { get set }
参数
index
要检索或替换的对象的索引。
-
从列表开头删除指定数量的对象。 对象不会从托管它们的 Realm 中删除。
警告
此方法只能在写事务(write transaction)期间调用。声明
Swift
public func removeFirst(_ number: Int = 1)
-
从列表末尾删除指定数量的对象。 对象不会从托管它们的 Realm 中删除。
警告
此方法只能在写事务(write transaction)期间调用。声明
Swift
public func removeLast(_ number: Int = 1)
-
将给定集合中的项目插入列表中的给定位置。
警告
此方法只能在写事务(write transaction)期间调用。声明
Swift
public func insert<C>(contentsOf newElements: C, at i: Int) where Element == C.Element, C : Collection
-
从列表中删除给定范围的对象。
警告
此方法只能在写事务(write transaction)期间调用。声明
Swift
public func removeSubrange<R>(_ boundsExpression: R) where R : RangeExpression, R.Bound == Int
-
声明
Swift
public convenience init(from decoder: Decoder) throws
-
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
投影到犬名称列表声明
Swift
public var projectTo: CollectionElementMapper<Element> { get }