Map

public final class Map<Key, Value> : RLMSwiftCollectionBase where Key : _MapKey, Value : RealmCollectionValue
extension Map: ObservableObject, RealmSubscribable
extension Map: Sequence
extension Map: RealmKeyedCollection

맵은 지원되는 Realm 유형을 저장하는 데 사용되는 키-값 저장 container입니다.

지도는 저장하는 유형에 따라 매개변수화된 일반 유형입니다. 이는 Object 하위 클래스이거나 다음 유형 중 하나일 수 있습니다: Bool, Int, Int8, Int16, Int32, Int64, Float, Double, String, Data, Date, Decimal128, ObjectId (및 해당 옵션 버전)

참고

Object제외한 위 유형의 선택 버전은 동기화되지 않은 Realm에서만 지원됩니다.

지도는 string 만 키로 지원합니다.

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

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

Object 서브클래스에 정의된 Map 유형의 속성은 let 로 선언되어야 하며 dynamic 일 수 없습니다.

속성

  • 지도를 managed Realm이거나 지도가 관리되지 않는 경우 nil 입니다.

    선언

    Swift

    public var realm: Realm? { get }
  • 지도에 더 이상 액세스할 수 없는지 여부를 나타냅니다.

    선언

    Swift

    public var isInvalidated: Bool { get }
  • 이 맵의 모든 키를 반환합니다.

    선언

    Swift

    public var keys: [Key] { get }
  • 이 맵의 모든 값을 반환합니다.

    선언

    Swift

    public var values: [Value] { get }

이니셜라이저

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

    선언

    Swift

    public override init()

Count

  • 이 맵에 있는 키-값 쌍의 수를 반환합니다.

    선언

    Swift

    @objc
    public var count: Int { get }

변형

  • 지정된 키에 대해 맵에 저장된 값을 업데이트하거나 키가 존재하지 않는 경우 새 키-값 쌍을 추가합니다.

    참고

    참고: 지도에 추가되는 값이 관리되지 않는 객체이고 지도가 managed 경우 관리되지 않는 객체는 Realm에 추가됩니다.

    경고

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

    선언

    Swift

    public func updateValue(_ value: Value, forKey key: Key)

    매개변수

    value

    값의 키 경로 술어입니다.

    forKey

    정렬할 방향입니다.

  • 키가 지도에 존재하는 경우에만 지정된 키와 관련 객체를 제거합니다. 키가 존재하지 않으면 맵이 수정되지 않습니다.

    경고

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

    선언

    Swift

    public func removeObject(for key: Key)
  • 지도에서 모든 객체를 제거합니다. 객체는 해당 객체를 managed Realm에서 제거되지 않습니다.

    경고

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

    선언

    Swift

    public func removeAll()
  • 주어진 키에 대한 값을 반환하거나, 할당에 아래 첨자를 사용하는 경우 키의 값을 설정합니다.

    참고

    참고: 지도에 추가되는 값이 관리되지 않는 객체이고 지도가 managed 경우 관리되지 않는 객체는 Realm에 추가됩니다.

    참고

    참고: 키에 할당되는 값이 nil 인 경우 해당 키가 맵에서 제거됩니다.

    경고

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

    선언

    Swift

    public subscript(key: Key) -> Value? { get set }

    매개변수

    key

    키입니다.

  • 지정된 키가 지도에 있는 경우 해당 키에 대한 AnyObject 유형을 반환합니다.

    선언

    Swift

    @objc
    public func object(forKey key: AnyObject) -> AnyObject?

    매개변수

    key

    값을 구하려는 속성의 키입니다.

KVC

  • 지정된 키가 지도에 있는 경우 해당 키에 대한 Value 유형을 반환합니다.

    키-값 코딩을 사용할 때 키는 문자열이어야 합니다.

    선언

    Swift

    @nonobjc
    public func value(forKey key: String) -> AnyObject?

    매개변수

    key

    값을 구하려는 속성의 키입니다.

  • 지정된 키가 지도에 있는 경우 해당 키에 대한 Value 유형을 반환합니다.

    선언

    Swift

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

    매개변수

    keyPath

    값을 구하려는 속성의 키입니다.

  • 지정된 키-값 쌍을 맵에 추가하거나 지정된 키가 이미 존재하는 경우 업데이트합니다.

    경고

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

    선언

    Swift

    public override func setValue(_ value: Any?, forKey key: String)

    매개변수

    value

    객체 값입니다.

    key

    각 객체에 값을 설정해야 하는 속성의 이름입니다.

필터링

  • 맵에서 지정된 술어와 일치하는 모든 값을 포함하는 Results 을 반환합니다.

    참고

    이렇게 하면 키-값 쌍이 아닌 맵의 값이 반환됩니다.

    선언

    Swift

    public func filter(_ predicate: NSPredicate) -> Results<Value>

    매개변수

    predicate

    값을 필터링할 조건자입니다.

  • 맵에 포함된 키-값 쌍이 지정된 조건자를 충족하는지 여부를 나타내는 부울 값을 반환합니다.

    선언

    Swift

    public func contains(where predicate: @escaping (_ key: Key, _ value: Value) -> Bool) -> Bool

    매개변수

    where

    지정된 맵의 키 쌍이 일치하는 항목을 나타내는지 테스트하는 클로저입니다.

정렬

  • 지도에 있지만 정렬된 객체를 포함하는 Results 를 반환합니다.

    객체는 해당 값을 기준으로 정렬됩니다. 예를 예시 Date의 지도를 최신 항목부터 가장 오래된 항목 순으로 정렬하려면 dates.sorted(ascending: true) 을(를) 호출할 수 있습니다.

    선언

    Swift

    public func sorted(ascending: Bool = true) -> Results<Value>

    매개변수

    ascending

    정렬할 방향입니다.

  • 지도에 있지만 정렬된 객체를 포함하는 Results 를 반환합니다.

    객체는 지정된 키 경로의 값을 기준으로 정렬됩니다. 예를 들어, Studentage 속성을 기준으로 가장 어린 것부터 가장 오래된 것까지 지도를 정렬하려면 students.sorted(byKeyPath: "age", ascending: true) 를 호출할 수 있습니다.

    경고

    사전은 부울, Date, NSDate, 단일 및 배정밀도 부동 소수점, 정수, 문자열 유형의 속성을 통해서만 정렬할 수 있습니다.

    선언

    Swift

    public func sorted(byKeyPath keyPath: String, ascending: Bool = true) -> Results<Value>

    매개변수

    keyPath

    정렬 기준이 되는 키 경로입니다.

    ascending

    정렬할 방향입니다.

  • 지도에 있지만 정렬된 객체를 포함하는 Results 를 반환합니다.

    경고

    지도는 부울, Date, NSDate, 단일 및 배정밀도 부동 소수점, 정수, 문자열 유형의 속성을 통해서만 정렬할 수 있습니다.

    ~를 참조하세요.

    sorted(byKeyPath:ascending:)

    선언

    Swift

    public func sorted<S: Sequence>(by sortDescriptors: S) -> Results<Value>
        where S.Iterator.Element == SortDescriptor

집계 작업

  • collection의 모든 객체 중 지정된 속성의 최소값(최저)을 반환하거나 지도가 비어 있는 경우 nil 를 반환합니다.

    경고

    유형이 MinMaxType 프로토콜을 준수하는 속성만 지정할 수 있습니다.

    선언

    Swift

    public func min<T>(ofProperty property: String) -> T? where T : MinMaxType

    매개변수

    property

    최소값을 원하는 속성의 이름입니다.

  • collection의 모든 객체 중 지정된 속성의 최대값(가장 높은 값)을 반환하거나, 지도가 비어 있는 경우 nil 를 반환합니다.

    경고

    유형이 MinMaxType 프로토콜을 준수하는 속성만 지정할 수 있습니다.

    선언

    Swift

    public func max<T>(ofProperty property: String) -> T? where T : MinMaxType

    매개변수

    property

    최소값을 원하는 속성의 이름입니다.

  • collection에 있는 객체에 지정된 속성의 합계를 반환하거나 지도가 비어 있는 경우 nil 를 반환합니다.

    경고

    AddableType 프로토콜을 준수하는 유형의 속성 이름만 사용할 수 있습니다.

    선언

    Swift

    public func sum<T>(ofProperty property: String) -> T where T : AddableType

    매개변수

    property

    합계를 계산할 AddableType 을(를) 준수하는 속성의 이름입니다.

  • collection의 모든 객체에 대한 지정된 속성의 평균값을 반환하거나 map이 비어 있는 경우 nil 를 반환합니다.

    경고

    유형이 AddableType 프로토콜을 준수하는 속성만 지정할 수 있습니다.

    선언

    Swift

    public func average<T>(ofProperty property: String) -> T? where T : AddableType

    매개변수

    property

    값을 합산해야 하는 속성의 이름입니다.

알림

  • 지도가 변경될 때마다 호출될 블록을 등록합니다.

    블록은 초기 맵과 비동기적으로 호출된 다음, 맵의 키나 값을 변경하는 각 쓰기 트랜잭션(write transaction) 후에 다시 호출됩니다.

    블록에 전달되는 change 매개변수는 각 쓰기 트랜잭션(write transaction) 중에 추가, 제거 또는 수정된 키-값 쌍을 맵 내의 키 형식으로 보고합니다.

    차단 이 호출되는 시점에 지도는 완전히 평가되고 최신 상태가 되며, 동일한 스레드에서 쓰기 트랜잭션 (write transaction) )을 수행하지 않거나 명시적으로 realm.refresh() 호출하지 않는 한 해당 스레드에 액세스해도 차단이 수행되지 않습니다. 일.

    대기열이 제공되지 않으면 표준 이벤트 루프를 통해 알림이 전달되므로 이벤트 루프가 다른 활동에 의해 차단되는 동안에는 알림을 전달할 수 없습니다. 대기열이 제공되면 대신 해당 대기열로 알림이 전달됩니다. 알림을 즉시 전달할 수 없는 경우 여러 알림이 단일 알림으로 병합될 수 있습니다. 여기에는 초기 collection에 대한 알림이 포함될 수 있습니다.

    예를 들어 다음 코드는 알림 차단을 추가한 직후 쓰기 트랜잭션(write transaction)을 수행하므로 초기 알림이 먼저 전달될 기회가 없습니다. 결과적으로 초기 알림에는 쓰기 트랜잭션(write transaction) 후 Realm의 상태가 반영됩니다.

    let myStringMap = myObject.stringMap
    print("myStringMap.count: \(myStringMap?.count)") // => 0
    let token = myStringMap.observe { changes in
        switch changes {
        case .initial(let myStringMap):
            // Will print "myStringMap.count: 1"
            print("myStringMap.count: \(myStringMap.count)")
           print("Dog Name: \(myStringMap["nameOfDog"])") // => "Rex"
            break
        case .update:
            // Will not be hit in this example
            break
        case .error:
            break
        }
    }
    try! realm.write {
        myStringMap["nameOfDog"] = "Rex"
    }
    // end of run loop execution context
    

    블록에 업데이트를 전송하려는 한 반환된 토큰을 보관해야 합니다. 업데이트 수신을 중지하려면 토큰에서 invalidate() 을 호출합니다.

    경고

    쓰기 트랜잭션(write transaction) 중에는 또는 포함하는 Realm이 읽기 전용일 때 이 메서드를 호출할 수 없습니다.

    선언

    Swift

    public func observe(on queue: DispatchQueue?,
                        _ block: @escaping (RealmMapChange<Map>) -> Void)
    -> NotificationToken

    매개변수

    queue

    알림을 수신할 직렬 디스패치 대기열입니다. nil 인 경우 알림이 현재 스레드로 전달됩니다.

    block

    변경이 발생할 때마다 호출되는 차단입니다.

    반환 값

    업데이트가 전달되기를 원하는 기간 동안 보유해야 하는 토큰입니다.

동결된 객체

  • Map 이(가) 동결되었는지 여부를 나타냅니다.

    동결된 Map은 변경할 수 없으며 모든 스레드에서 액세스할 수 있습니다. 동결된 Map은 관리되는 라이브 Map 에서 -freeze 를 호출하여 생성됩니다. 관리되지 않는 Map는 동결되지 않습니다.

    선언

    Swift

    public var isFrozen: Bool { get }
  • Map 의 동결(불변) 스냅샷을 반환합니다.

    동결된 사본은 변경할 수 없는 Map 이며 이 Map 에는 현재 포함되어 있는 것과 동일한 데이터를 포함하지만 포함하는 Realm에 쓰기가 수행될 때 업데이트되지 않습니다. 라이브 Map와 달리 동결된 Map은 모든 스레드에서 액세스할 수 있습니다.

    경고

    쓰기 트랜잭션(write transaction) 중에는 또는 포함하는 Realm이 읽기 전용일 때 이 메서드를 호출할 수 없습니다.

    경고

    이 메서드는 managed Map 에서만 호출할 수 있습니다.

    경고

    Realm에서 쓰기 트랜잭션(write transaction)을 수행하는 동안 동결된 Map 을(를) 오랫동안 유지하면 Realm 파일 크기가 커질 수 있습니다. 자세한 내용은 RLMRealmConfiguration.maximumNumberOfActiveVersions 을(를) 참조하세요.

    선언

    Swift

    public func freeze() -> Map
  • 이 동결된 Map 의 라이브 버전을 반환합니다.

    이 메서드는 동일한 동결된 Map 의 라이브 사본에 대한 참고를 확인합니다. 라이브 Map 에서 호출되면 자체를 반환합니다.

    선언

    Swift

    public func thaw() -> Map?
  • 지도에 포함된 객체에 대한 사람이 읽을 수 있는 설명을 반환합니다.

    선언

    Swift

    @objc
    public override var description: String { get }

Map

  • collection이 변경될 때마다 Void를 방출하는 출판사입니다.

    이름과 달리 실제로 collection 변경된 후에 방출합니다.

    선언

    Swift

    public var objectWillChange: RealmPublishers.WillChange<Map> { get }

시퀀스 지원

Value: MinMaxType에서 사용 가능

  • 지도의 최소값(가장 낮은 값)을 반환하거나, 지도가 비어 있는 경우 nil 을 반환합니다.

    선언

    Swift

    public func min() -> Value?
  • 지도의 최대값(가장 높은 값)을 반환하거나, 지도가 비어 있는 경우 nil 을 반환합니다.

    선언

    Swift

    public func max() -> Value?

Value: OptionalProtocol, Value.Wrapped: MinMaxType에서 사용 가능

  • 지도의 최소값(가장 낮은 값)을 반환하거나, 지도가 비어 있는 경우 nil 을 반환합니다.

    선언

    Swift

    public func min() -> Value.Wrapped?
  • 지도의 최대값(가장 높은 값)을 반환하거나, 지도가 비어 있는 경우 nil 을 반환합니다.

    선언

    Swift

    public func max() -> Value.Wrapped?

Value: AddableType에서 사용 가능

  • 맵에 있는 값의 합계를 반환합니다.

    선언

    Swift

    public func sum() -> Value
  • 지도에 있는 값의 평균을 반환하거나, 지도가 비어 있는 경우 nil 을 반환합니다.

    선언

    Swift

    public func average<T>() -> T? where T : AddableType

Value: OptionalProtocol, Value.Wrapped: AddableType에서 사용 가능

  • 지도에 있는 값의 합계를 반환하거나, 지도가 비어 있는 경우 nil 을 반환합니다.

    선언

    Swift

    func sum() -> Value.Wrapped
  • 컬렉션에 있는 모든 값의 평균을 반환합니다.

    선언

    Swift

    func average<T>() -> T? where T : AddableType