목록

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에서 to-many 관계를 정의하는 데 사용되는 컨테이너 유형입니다.

Swift의 Array 처럼 List 도 저장하는 유형에 따라 매개변수화되는 일반 유형입니다. 이 클래스는 Object 서브클래스이거나 다음 유형 중 하나일 수 있습니다: Bool, Int, Int8, Int16, Int32, Int64, Float, Double, String, Data, Date, Decimal128ObjectId (및 해당 옵션 버전)

Swift의 네이티브 컬렉션과 달리 List는 참조 유형이며 collection을 managed하는 Realm이 읽기 전용으로 열린 경우에만 변경되지 않습니다.

목록은 Results<Element> 과 동일한 조건자를 사용하여 필터링하고 정렬할 수 있습니다.

이니셜라이저

  • Element 유형의 Realm 모델 객체를 보유하는 List 을 만듭니다.

    선언

    스위프트

    public override init()

객체 조회

  • 지정된 인덱스에 있는 객체를 반환하거나(get), 지정된 인덱스에 있는 객체를 대체합니다(set).

    경고

    쓰기 트랜잭션(write transaction) 중에만 객체를 설정할 수 있습니다.

    선언

    스위프트

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

    매개변수

    index

    검색하거나 바꿀 객체의 인덱스입니다.

KVC

  • 컬렉션의 각 객체에 대해 를 Array 사용하여 를 호출한 결과가 포함된 valueForKey(_:) 을 반환합니다.key

    선언

    스위프트

    @nonobjc
    public func value(forKey key: String) -> [AnyObject]
  • 컬렉션의 각 객체에 대해 를 Array 사용하여 를 호출한 결과가 포함된 valueForKeyPath(_:) 을 반환합니다.keyPath

    선언

    스위프트

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

    매개변수

    keyPath

    값을 원하는 속성의 키 경로입니다.

변형

  • 지정된 객체를 목록 끝에 추가합니다.

    객체가 수신자와 다른 Realm에서 managed하는 경우 복사본이 만들어지고 수신자를 managed하는 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

    객체를 삽입할 인덱스입니다.

  • 지정된 인덱스에서 객체를 제거합니다. 객체는 해당 객체를 managed Realm에서 제거되지 않습니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    경고

    이 메서드는 유효하지 않은 인덱스로 호출하면 예외가 발생합니다.

    선언

    스위프트

    public func remove(at index: Int)

    매개변수

    index

    객체를 제거할 인덱스입니다.

  • 목록에서 모든 객체를 제거합니다. 객체는 해당 객체를 managed 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 }
  • 요소의 지정된 subRangenewElements 로 바꿉니다.

    선언

    스위프트

    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

    검색하거나 바꿀 객체의 인덱스입니다.

  • 목록의 시작 부분에서 지정된 수의 객체를 제거합니다. 객체는 해당 객체를 managed Realm에서 제거되지 않습니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    스위프트

    public func removeFirst(_ number: Int = 1)
  • 목록 끝에서 지정된 수의 객체를 제거합니다. 객체는 해당 객체를 managed Realm에서 제거되지 않습니다.

    경고

    이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.

    선언

    스위프트

    public func removeLast(_ number: Int = 1)
  • 지정된 collection의 항목을 목록의 지정된 위치에 삽입합니다.

    경고

    이 메서드는 쓰기 트랜잭션(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

Element: Decodable에서 사용 가능

Element: ObjectBase & RealmCollectionValue에서 사용 가능

  • 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 }