결과
@frozen
public struct Results<Element> : Equatable where Element : RealmCollectionValue
extension Results: RealmSubscribable
extension Results: RealmCollection
extension Results: Encodable where Element: Encodable
Results
객체 쿼리에서 반환되는 Realm의 자동 업데이트 container 유형입니다.
Results
List<Element>
와(과) 동일한 조건자를 사용하여 쿼리할 수 있으며, 쿼리를 연결하여 쿼리 결과를 추가로 필터링할 수 있습니다.
Results
현재 스레드에서 쓰기 트랜잭션(write transaction)을 포함하여 항상 현재 스레드에서 Realm의 현재 상태를 반영합니다. 한 가지 예외는 for...in
열거를 사용하는 경우이며, 이는 열거 중에 필터에 의해 제외되도록 일부 객체가 삭제되거나 수정되더라도 열거가 시작될 때 쿼리와 일치하는 객체를 항상 열거합니다.
Results
처음 액세스할 때 느리게 평가됩니다. 쿼리 결과가 요청될 때만 쿼리를 실행합니다. 즉, 여러 개의 임시 Results
를 연결하여 데이터를 정렬하고 필터링해도 중간 상태를 처리하는 불필요한 작업을 수행하지 않습니다.
결과가 평가되거나 알림 차단이 추가되면 결과가 최신 상태로 유지되며 가능하면 백그라운드 스레드에서 최신 상태로 유지하기 위한 작업이 수행됩니다.
결과 인스턴스는 직접 인스턴스화할 수 없습니다.
-
결과가 나타내는 객체에 대한 사람이 읽을 수 있는 설명입니다.
선언
Swift
public var description: String { get }
-
결과에서 설명하는 객체의 유형입니다.
선언
Swift
public typealias ElementType = Element
-
결과에서 지정된 객체 의 인덱스 를 반환하거나, 객체 가 없는 경우
nil
을 반환합니다.선언
Swift
public func index(of object: Element) -> Int?
-
조건자와 일치하는 첫 번째 객체의 인덱스를 반환하거나, 일치하는 객체가 없는 경우
nil
를 반환합니다.선언
Swift
public func index(matching predicate: NSPredicate) -> Int?
매개변수
predicate
객체를 필터링하는 데 사용할 조건자입니다.
-
지정된
index
위치에 객체를 반환합니다.선언
Swift
public subscript(position: Int) -> Element { get }
매개변수
index
인덱스입니다.
-
결과의 첫 번째 객체 를 반환하거나 결과가 비어 있는 경우
nil
을 반환합니다.선언
Swift
public var first: Element? { get }
-
결과의 마지막 객체 를 반환하거나 결과가 비어 있는 경우
nil
을 반환합니다.선언
Swift
public var last: Element? { get }
-
각 결과에 대해
key
를 사용하여valueForKey(_:)
를 호출한 결과가 포함된Array
을 반환합니다.선언
Swift
public func value(forKey key: String) -> Any?
매개변수
key
값을 원하는 속성의 이름입니다.
-
각 결과에 대해
keyPath
를 사용하여valueForKeyPath(_:)
를 호출한 결과가 포함된Array
을 반환합니다.선언
Swift
public func value(forKeyPath keyPath: String) -> Any?
매개변수
keyPath
값을 원하는 속성의 키 경로입니다.
-
지정된
value
및key
를 사용하여 결과에 표시된 각 객체에 대해setValue(_:forKey:)
를 호출합니다.경고
이 메서드는 쓰기 트랜잭션(write transaction) 중에만 호출할 수 있습니다.
선언
Swift
public func setValue(_ value: Any?, forKey key: String)
매개변수
value
객체 값입니다.
key
각 객체에 값을 설정해야 하는 속성의 이름입니다.
-
컬렉션에서 지정된 조건자와 일치하는 모든 객체를 포함하는
Results
를 반환합니다.선언
Swift
public func filter(_ predicate: NSPredicate) -> Results<Element>
매개변수
predicate
객체를 필터링하는 데 사용할 조건자입니다.
-
결과에 표시되지만 정렬된 객체를 포함하는
Results
를 반환합니다.객체는 지정된 키 경로의 값을 기준으로 정렬됩니다. 예를 들어,
Student
collection을age
속성을 기준으로 가장 오래된 것부터 가장 오래된 것 순으로 정렬하려면students.sorted(byKeyPath: "age", ascending: true)
를 호출할 수 있습니다.경고
collection은 부울,
Date
,NSDate
, 단일 및 배정밀도 부동 소수점, 정수, 문자열 유형의 속성을 통해서만 정렬할 수 있습니다.선언
Swift
public func sorted(byKeyPath keyPath: String, ascending: Bool = true) -> Results<Element>
매개변수
keyPath
정렬 기준이 되는 키 경로입니다.
ascending
정렬할 방향입니다.
-
결과에 표시되지만 정렬된 객체를 포함하는
Results
를 반환합니다.경고
collection은 부울,
Date
,NSDate
, 단일 및 배정밀도 부동 소수점, 정수, 문자열 유형의 속성을 통해서만 정렬할 수 있습니다.~를 참조하세요.
선언
Swift
public func sorted<S: Sequence>(by sortDescriptors: S) -> Results<Element> where S.Iterator.Element == SortDescriptor
매개변수
sortDescriptors
정렬 기준이 되는
SortDescriptor
의 시퀀스입니다. -
지정된 키 경로를 기반으로 고유 객체가 포함된
Results
을 반환합니다.선언
Swift
public func distinct<S: Sequence>(by keyPaths: S) -> Results<Element> where S.Iterator.Element == String
매개변수
keyPaths
사용된 주요 경로는 뚜렷한 결과를 냅니다.
-
모든 결과 중에서 지정된 속성 의 최소값(가장 낮은 값)을 반환하거나 결과가 비어 있는 경우
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
평균값을 계산해야 하는 속성 의 이름입니다.
-
collection이 변경될 때마다 호출될 블록을 등록합니다.
블록은 초기 결과와 함께 비동기적으로 호출된 다음 컬렉션의 객체 또는 컬렉션에 있는 객체를 변경하는 각 쓰기 트랜잭션(write transaction) 후에 다시 호출됩니다.
블록에 전달되는
change
매개변수는 각 쓰기 트랜잭션(write transaction) 중에 추가, 제거 또는 수정된 객체를 collection 내에서 인덱스 형식으로 보고합니다. 제공된 변경 정보에 대한 자세한 내용과 이를 사용하여UITableView
을 업데이트하는 방법에 대한 예는RealmCollectionChange
문서를 참조하세요.차단이 호출되는 시점에 collection은 완전히 평가되고 최신 상태이므로 동일한 스레드에서 쓰기 트랜잭션 (write transaction)을 수행하지 않거나 명시적으로
realm.refresh()
호출하지 않는 한 해당 스레드에 액세스하면 차단이 수행되지 않습니다. 일.대기열이 제공되지 않으면 표준 이벤트 루프를 통해 알림이 전달되므로 이벤트 루프가 다른 활동에 의해 차단되는 동안에는 알림을 전달할 수 없습니다. 대기열이 제공되면 대신 해당 대기열로 알림이 전달됩니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다. 여기에는 초기 collection에 대한 알림이 포함될 수 있습니다.
예를 들어 다음 코드는 알림 차단을 추가한 직후 쓰기 트랜잭션(write transaction)을 수행하므로 초기 알림이 먼저 전달될 기회가 없습니다. 결과적으로 초기 알림에는 쓰기 트랜잭션(write transaction) 후 Realm의 상태가 반영됩니다.
let dogs = 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이 읽기 전용일 때 이 메서드를 호출할 수 없습니다.
선언
Swift
public func observe(on queue: DispatchQueue? = nil, _ block: @escaping (RealmCollectionChange<Results>) -> Void) -> NotificationToken
매개변수
queue
알림을 수신할 직렬 디스패치 대기열입니다.
nil
인 경우 알림이 현재 스레드로 전달됩니다.block
변경이 발생할 때마다 호출되는 차단입니다.
반환 값
업데이트가 전달되기를 원하는 기간 동안 보유해야 하는 토큰입니다.
-
선언
Swift
public var isFrozen: Bool { get }
-
선언
Swift
public func freeze() -> Results
-
선언
Swift
public func thaw() -> Results?
-
collection이 변경될 때마다 Void를 방출하는 출판사입니다.
이름과 달리 실제로 collection 변경된 후에 방출합니다.
선언
Swift
public var objectWillChange: RealmPublishers.WillChange<Results> { get }
-
결과에 연속 요소를 생성하는
RLMIterator
를 반환합니다.선언
Swift
public func makeIterator() -> RLMIterator<Element>
-
비어 있지 않은 collection에서 첫 번째 요소의 위치입니다. 빈 collection의 endIndex 와 동일합니다.
선언
Swift
public var startIndex: Int { get }
-
컬렉션의 '끝 이후' 위치입니다. endIndex는 아래 첨자에 대한 유효한 인수가 아니며, 0개 이상의 Successor() 애플리케이션으로 항상 startIndex에서 도달할 수 있습니다.
선언
Swift
public var endIndex: Int { get }
-
선언
Swift
public func index(after i: Int) -> Int
-
선언
Swift
public func index(before i: Int) -> Int
-
선언
Swift
public func encode(to encoder: Encoder) throws