목록
public final class List<Element> : RLMSwiftCollectionBase where Element : RealmCollectionValue
extension List: ObservableObject, RealmSubscribable
extension List: RealmCollection
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
, Decimal128
및 ObjectId
(및 해당 옵션 버전)
Swift의 네이티브 컬렉션과 달리 List
는 참조 유형이며 collection을 managed하는 Realm이 읽기 전용으로 열린 경우에만 변경되지 않습니다.
목록은 Results<Element>
과 동일한 조건자를 사용하여 필터링하고 정렬할 수 있습니다.
Object
서브클래스에 정의된 List
유형의 속성은 let
로 선언되어야 하며 dynamic
일 수 없습니다.
-
목록을 관리하는 Realm이거나 목록이 관리되지 않는 경우
nil
입니다.선언
스위프트
public var realm: Realm? { get }
-
목록에 더 이상 액세스할 수 없는지 여부를 나타냅니다.
선언
스위프트
public var isInvalidated: Bool { get }
-
Element
유형의 Realm 모델 객체를 보유하는List
을 만듭니다.선언
스위프트
public override init()
-
이 목록에 있는 객체의 수를 반환합니다.
선언
스위프트
public var count: Int { get }
-
목록에 있는 객체의 인덱스를 반환하거나, 객체가 없는 경우
nil
을 반환합니다.선언
스위프트
public func index(of object: Element) -> Int?
매개변수
object
찾을 객체입니다.
-
목록에서 조건자와 일치하는 첫 번째 객체의 인덱스를 반환하거나 일치하는 객체가 없는 경우
nil
을 반환합니다.선언
스위프트
public func index(matching predicate: NSPredicate) -> Int?
매개변수
predicate
객체를 필터링하는 데 사용할 조건자입니다.
-
지정된 인덱스에 있는 객체를 반환하거나(get), 지정된 인덱스에 있는 객체를 대체합니다(set).
경고
쓰기 트랜잭션(write transaction) 중에만 객체를 설정할 수 있습니다.
선언
스위프트
public subscript(position: Int) -> Element { get set }
매개변수
index
검색하거나 바꿀 객체의 인덱스입니다.
-
목록의 첫 번째 객체를 반환하거나 목록이 비어 있는 경우
nil
을 반환합니다.선언
스위프트
public var first: Element? { get }
-
목록의 마지막 객체를 반환하거나, 목록이 비어 있는 경우
nil
을 반환합니다.선언
스위프트
public var last: Element? { get }
-
컬렉션의 각 객체에 대해 를
Array
사용하여 를 호출한 결과가 포함된valueForKey(_:)
을 반환합니다.key
선언
스위프트
@nonobjc public func value(forKey key: String) -> [AnyObject]
-
컬렉션의 각 객체에 대해 를
Array
사용하여 를 호출한 결과가 포함된valueForKeyPath(_:)
을 반환합니다.keyPath
선언
스위프트
@nonobjc public func value(forKeyPath keyPath: String) -> [AnyObject]
매개변수
keyPath
값을 원하는 속성의 키 경로입니다.
-
지정된
value
및key
를 사용하여 컬렉션의 각 객체에 대해setValue(_:forKey:)
을(를) 호출합니다.경고
이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.
선언
스위프트
public override func setValue(_ value: Any?, forKey key: String)
매개변수
value
객체 값입니다.
key
각 객체에 값을 설정해야 하는 속성의 이름입니다.
-
목록에 있지만 정렬된 객체를 포함하는
Results
을 반환합니다.객체는 지정된 키 경로의 값을 기준으로 정렬됩니다. 예를 들어,
age
속성을 기준으로 가장 오래된 것부터 가장 오래된 것까지Student
목록을 정렬하려면students.sorted(byKeyPath: "age", ascending: true)
를 호출할 수 있습니다.경고
목록은 부울,
Date
,NSDate
, 단정밀도 및 배정밀도 부동 소수점, 정수, 문자열 유형의 속성을 통해서만 정렬할 수 있습니다.선언
스위프트
public func sorted(byKeyPath keyPath: String, ascending: Bool = true) -> Results<Element>
매개변수
keyPath
정렬 기준이 되는 키 경로입니다.
ascending
정렬할 방향입니다.
-
목록에 있지만 정렬된 객체를 포함하는
Results
을 반환합니다.경고
목록은 부울,
Date
,NSDate
, 단정밀도 및 배정밀도 부동 소수점, 정수, 문자열 유형의 속성을 통해서만 정렬할 수 있습니다.~를 참조하세요.
선언
스위프트
public func sorted<S: Sequence>(by sortDescriptors: S) -> Results<Element> where S.Iterator.Element == SortDescriptor
-
목록에 있는 모든 객체 중 지정된 속성의 최소값(가장 낮은 값)을 반환하거나, 목록이 비어 있는 경우
nil
을 반환합니다.경고
유형이
MinMaxType
프로토콜을 준수하는 속성만 지정할 수 있습니다.선언
스위프트
public func min<T>(ofProperty property: String) -> T? where T : MinMaxType
매개변수
property
최소값을 원하는 속성의 이름입니다.
-
목록에 있는 모든 객체 중 지정된 속성의 최대값(가장 높은 값)을 반환하거나, 목록이 비어 있는 경우
nil
을 반환합니다.경고
유형이
MinMaxType
프로토콜을 준수하는 속성만 지정할 수 있습니다.선언
스위프트
public func max<T>(ofProperty property: String) -> T? where T : MinMaxType
매개변수
property
최대값을 원하는 속성의 이름입니다.
-
목록의 모든 객체에 대해 지정된 속성 값의 합계를 반환합니다.
경고
유형이
AddableType
프로토콜을 준수하는 속성만 지정할 수 있습니다.선언
스위프트
public func sum<T>(ofProperty property: String) -> T where T : AddableType
매개변수
property
값을 합산해야 하는 속성의 이름입니다.
-
목록에 있는 모든 객체에 대한 지정된 속성의 평균값을 반환하거나, 목록이 비어 있는 경우
nil
을 반환합니다.경고
유형이
AddableType
프로토콜을 준수하는 속성만 지정할 수 있습니다.선언
스위프트
public func average<T>(ofProperty property: String) -> T? where T : AddableType
매개변수
property
평균값을 계산해야 하는 속성의 이름입니다.
-
지정된 객체를 목록 끝에 추가합니다.
객체가 수신자와 다른 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
에 있는 객체를 대체해야 하는 객체의 인덱스입니다.
-
collection이 변경될 때마다 호출될 블록을 등록합니다.
블록은 초기 결과와 함께 비동기적으로 호출된 다음 컬렉션의 객체 또는 컬렉션에 있는 객체를 변경하는 각 쓰기 트랜잭션(write transaction) 후에 다시 호출됩니다.
블록에 전달되는
change
매개변수는 각 쓰기 트랜잭션(write transaction) 중에 추가, 제거 또는 수정된 객체를 collection 내에서 인덱스 형식으로 보고합니다. 제공된 변경 정보에 대한 자세한 내용과 이를 사용하여UITableView
을 업데이트하는 방법에 대한 예는RealmCollectionChange
문서를 참조하세요.차단이 호출되는 시점에 collection은 완전히 평가되고 최신 상태이므로 동일한 스레드에서 쓰기 트랜잭션 (write transaction)을 수행하지 않거나 명시적으로
realm.refresh()
호출하지 않는 한 해당 스레드에 액세스하면 차단이 수행되지 않습니다. 일.대기열이 제공되지 않으면 표준 이벤트 루프를 통해 알림이 전달되므로 이벤트 루프가 다른 활동에 의해 차단되는 동안에는 알림을 전달할 수 없습니다. 대기열이 제공되면 대신 해당 대기열로 알림이 전달됩니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다. 여기에는 초기 collection에 대한 알림이 포함될 수 있습니다.
예를 들어 다음 코드는 알림 차단을 추가한 직후 쓰기 트랜잭션(write transaction)을 수행하므로 초기 알림이 먼저 전달될 기회가 없습니다. 결과적으로 초기 알림에는 쓰기 트랜잭션(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.append(dog) } // end of run loop execution context
블록에 업데이트를 전송하려는 한 반환된 토큰을 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서
invalidate()
을 호출합니다.경고
쓰기 트랜잭션(write transaction) 중에는 또는 포함하는 Realm이 읽기 전용일 때 이 메서드를 호출할 수 없습니다.
선언
스위프트
public func observe(on queue: DispatchQueue? = nil, _ block: @escaping (RealmCollectionChange<List>) -> Void) -> NotificationToken
매개변수
queue
알림을 수신할 직렬 디스패치 대기열입니다.
nil
인 경우 알림이 현재 스레드로 전달됩니다.block
변경이 발생할 때마다 호출되는 차단입니다.
반환 값
업데이트가 전달되기를 원하는 기간 동안 보유해야 하는 토큰입니다.
-
선언
스위프트
public var isFrozen: Bool { get }
-
선언
스위프트
public func freeze() -> List
-
선언
스위프트
public func thaw() -> List?
-
목록에 포함된 객체에 대한 사람이 읽을 수 있는 설명을 반환합니다.
선언
스위프트
@objc public override var description: String { get }
-
collection이 변경될 때마다 Void를 방출하는 출판사입니다.
이름과 달리 실제로 collection 변경된 후에 방출합니다.
선언
스위프트
public var objectWillChange: RealmPublishers.WillChange<List> { get }
-
목록에 저장된 객체의 유형입니다.
선언
스위프트
public typealias ElementType = Element
-
List
의 연속 요소를 생성하는RLMIterator
을 반환합니다.선언
스위프트
public func makeIterator() -> RLMIterator<Element>
-
요소의 지정된
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
목록에 삽입할 새 요소입니다.
-
비어 있지 않은 collection에서 첫 번째 요소의 위치입니다. 빈 collection의 endIndex 와 동일합니다.
선언
스위프트
public var startIndex: Int { get }
-
컬렉션의 '끝 이후' 위치입니다. endIndex는 아래 첨자에 대한 유효한 인수가 아니며, 0개 이상의 Successor() 애플리케이션으로 항상 startIndex에서 도달할 수 있습니다.
선언
스위프트
public var endIndex: Int { get }
-
선언
스위프트
public func index(after i: Int) -> Int
-
선언
스위프트
public func index(before i: Int) -> Int
-
선언
스위프트
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
-
목록에서 최소값(가장 낮은 값)을 반환하거나 목록이 비어 있는 경우
nil
을 반환합니다.선언
스위프트
public func min() -> Element?
-
목록의 최대값(가장 높은 값)을 반환하거나 목록이 비어 있는 경우
nil
을 반환합니다.선언
스위프트
public func max() -> Element?
-
목록에 있는 값의 합계를 반환합니다.
선언
스위프트
public func sum() -> Element
-
목록에 있는 값의 평균을 반환하거나 목록이 비어 있는 경우
nil
을 반환합니다.선언
스위프트
public func average<T>() -> T? where T : AddableType
-
선언
스위프트
public convenience init(from decoder: Decoder) throws
-
선언
스위프트
public func encode(to encoder: Encoder) throws