구조

다음 구조는 전 세계적으로 사용할 수 있습니다.

  • 이 구조체는 다음을 통해 Swift에서 RLMObject에 대한 시퀀스 스타일 열거를 활성화합니다. RLMCollection.makeIterator

    더 보기

    선언

    Swift

    public struct RLMCollectionIterator : IteratorProtocol
  • 이 구조체는 다음을 통해 Swift에서 RLMDictionary에 대한 시퀀스 스타일 열거를 활성화합니다. RLMDictionary.makeIterator

    더 보기

    선언

    Swift

    public struct RLMDictionaryIterator : IteratorProtocol
  • Realm 인스턴스('Realm'이라고도 함)는 Realm 데이터베이스를 나타냅니다.

    Realm은 디스크( init(path:) 참조) 또는 메모리( Configuration 참조)에 저장할 수 있습니다.

    Realm 즉, 동일한 경로나 식별자를 사용하여 동등한 Realm 객체를 구성하면 오버헤드가 제한적으로 발생합니다.

    특히 Realm 인스턴스가 제거되었는지 확인하려면(예를 들어, Realm을 열고 일부 속성을 확인한 다음 Realm 파일을 삭제했다가 다시 열려면 Realm을 사용하는 코드를 배치합니다. autoreleasepool {} 내에 넣고 이에 대한 다른 강력한 참조가 없는지 확인합니다.

    경고

    동결되지 않은 RLMRealm 인스턴스는 스레드에 한정되어 있으며 스레드 또는 디스패치 대기열 전체에서 공유할 수 없습니다. 이 작업을 시도하면 예외가 발생합니다. 당신은 RLMRealm Realm과 상호 작용하려는 각 스레드 또는 대기열에서 인스턴스를 가져와야 합니다. Realm은 인스턴스를 가져올 때 대기열을 명시적으로 전달하여 열린 스레드가 아닌 디스패치 대기열에 제한할 수 RLMRealm 있습니다. 이 작업을 수행하지 않으면 대기열이 항상 동일한 스레드에서 실행되지 않으므로 여러 블록에서 동일한 인스턴스를 동일한 대기열에 디스패치하여 사용하려는 시도가 실패할 수 있습니다.
    더 보기

    선언

    Swift

    @frozen
    public struct Realm
    extension Realm: Equatable
  • LinkingObjects 자동 업데이트 container 유형입니다. 속성 관계를 통해 소유 모델 객체에 연결된 0개 이상의 객체를 나타냅니다.

    LinkingObjects List<Element>Results<Element> 와 동일한 조건자를 사용하여 쿼리할 수 있습니다.

    LinkingObjects 현재 스레드에서 쓰기 트랜잭션(write transaction)을 포함하여 항상 현재 스레드에서 Realm의 현재 상태를 반영합니다. 한 가지 예외는 for...in 열거형을 사용하는 경우로, 이는 열거형이 시작될 때 존재했던 연결 객체 중 일부가 삭제되거나 수정되어 열거형 중에 대상 객체에 더 이상 연결되지 않는 경우에도 항상 열거형을 열거합니다. .

    LinkingObjects Object 모델에서만 속성으로 사용할 수 있습니다.

    더 보기

    선언

    Swift

    @frozen
    public struct LinkingObjects<Element> : RealmCollectionImpl where Element : RLMObjectBase, Element : RealmCollectionValue
    extension LinkingObjects: RealmSubscribable
    extension LinkingObjects: LinkingObjectsProtocol

AddableType

  • Results 객체 쿼리에서 반환되는 Realm의 자동 업데이트 container 유형입니다.

    Results List<Element> 와(과) 동일한 조건자를 사용하여 쿼리할 수 있으며, 쿼리를 연결하여 쿼리 결과를 추가로 필터링할 수 있습니다.

    Results 현재 스레드에서 쓰기 트랜잭션(write transaction)을 포함하여 항상 현재 스레드에서 Realm의 현재 상태를 반영합니다. 한 가지 예외는 for...in 열거를 사용하는 경우이며, 이는 열거 중에 필터에 의해 제외되도록 일부 객체가 삭제되거나 수정되더라도 열거가 시작될 때 쿼리와 일치하는 객체를 항상 열거합니다.

    Results 처음 액세스할 때 느리게 평가됩니다. 쿼리 결과가 요청될 때만 쿼리를 실행합니다. 즉, 여러 개의 임시 Results 를 연결하여 데이터를 정렬하고 필터링해도 중간 상태를 처리하는 불필요한 작업을 수행하지 않습니다.

    결과가 평가되거나 알림 차단이 추가되면 결과가 최신 상태로 유지되며 가능하면 백그라운드 스레드에서 최신 상태로 유지하기 위한 작업이 수행됩니다.

    결과 인스턴스는 직접 인스턴스화할 수 없습니다.

    더 보기

    선언

    Swift

    @frozen
    public struct Results<Element> : Equatable, RealmCollectionImpl where Element : RealmCollectionValue
    extension Results: RealmSubscribable
    extension Results: Encodable where Element: Encodable
  • SectionedResults 개별 ResultsSection를 요소로 보유하는 유형 안전 collection입니다. container는 느리게 평가되므로 기본 collection이 변경된 경우 섹션 키의 전체 재계산이 수행됩니다. SectionedResults 인스턴스는 관찰할 수 있으며 ThreadConfined 도 준수합니다.

    더 보기

    선언

    Swift

    public struct SectionedResults<Key, SectionElement> : SectionedResultImpl where Key : _Persistable, Key : Hashable, SectionElement : RealmCollectionValue
    extension SectionedResults: RealmSubscribable
  • ResultsSection 은(는) 지정된 섹션 키에 속한 객체에 대한 액세스를 허용하는 collection입니다. collection은 느리게 평가되므로 기본 collection이 변경된 경우 섹션 키의 전체 재계산이 수행됩니다. ResultsSection 인스턴스는 관찰할 수 있으며 ThreadConfined 도 준수합니다.

    더 보기

    선언

    Swift

    public struct ResultsSection<Key, T> : SectionedResultImpl where Key : _Persistable, Key : Hashable, T : RealmCollectionValue
    extension ResultsSection: RealmSubscribable
    extension ResultsSection: Identifiable

관찰

  • 유형이 지워진 RealmCollection 입니다.

    RealmCollection 의 인스턴스는 동일한 Element 유형을 가진 불투명한 기본 collection으로 작업을 전달합니다. 이 유형은 여러 유형의 Realm collection에서 작동하거나 저장할 수 있는 일반적이지 않은 코드를 작성하는 데 사용할 수 있습니다. 원본 collection을 직접 사용하는 것에 대한 런타임 오버헤드가 없습니다.

    더 보기

    선언

    Swift

    @frozen
    public struct AnyRealmCollection<Element> : RealmCollectionImpl where Element : RealmCollectionValue
    extension AnyRealmCollection: RealmSubscribable
    extension AnyRealmCollection: Encodable where Element: Encodable
  • ProjectedCollection은 프로젝션의 속성에 대한 특수한 유형의 collection으로, Realm 객체의 List 를 프로젝트하려는 경우에 사용해야 합니다. 이 유형은 수동으로 인스턴스화할 필요가 없습니다. List 속성에서 projectTo 을(를) 호출하여 사용합니다.

    class PersistedListObject: Object {
        @Persisted public var people: List<CommonPerson>
    }
    
    class ListProjection: Projection<PersistedListObject> {
        @Projected(\PersistedListObject.people.projectTo.firstName) var strings: ProjectedCollection<String>
    }
    
    더 보기

    선언

    Swift

    public struct ProjectedCollection<Element> : RandomAccessCollection, CustomStringConvertible, ThreadConfined where Element : RealmCollectionValue
  • CollectionElementMapper 실제 collection 객체를 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

    @dynamicMemberLookup
    public struct CollectionElementMapper<Element> where Element : RLMObjectBase, Element : RealmCollectionValue
  • Schema 인스턴스는 Realm에서 관리하는 모델 객체 스키마 컬렉션을 나타냅니다.

    Realm을 사용할 때 Schema 인스턴스를 사용하면 마이그레이션을 수행하고 데이터베이스의 스키마를 인트로스펙션할 수 있습니다.

    스키마는 코어 데이터베이스의 collection 테이블에 매핑됩니다.

    더 보기

    선언

    Swift

    @frozen
    public struct Schema : CustomStringConvertible
    extension Schema: Equatable
  • SectionedResults 인스턴스의 반복자(iterator)입니다.

    더 보기

    선언

    Swift

    @frozen
    public struct SectionedResultsIterator<Key, Element> : IteratorProtocol where Key : _Persistable, Key : Hashable, Element : RealmCollectionValue
  • Section 인스턴스의 반복자(iterator)입니다.

    더 보기

    선언

    Swift

    @frozen
    public struct SectionIterator<Element> : IteratorProtocol where Element : RealmCollectionValue
  • SortDescriptorsorted(sortDescriptors:) 와 함께 사용할 키 경로와 정렬 순서를 저장합니다. NSSortDescriptor 와(과) 비슷하지만 Realm의 쿼리 엔진에서 효율적으로 실행할 수 있는 기능의 하위 집합만 지원합니다.

    더 보기

    선언

    Swift

    @frozen
    public struct SortDescriptor
    extension SortDescriptor: CustomStringConvertible
    extension SortDescriptor: Equatable
    extension SortDescriptor: ExpressibleByStringLiteral

구독

  • Realm 알림을 래핑하는 구독입니다.

    더 보기

    선언

    Swift

    @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
    @frozen
    public struct ObservationSubscription : Subscription
  • Realm AsyncOpenTask를 래핑하는 구독입니다.

    더 보기

    선언

    Swift

    @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
    @frozen
    public struct AsyncOpenSubscription : Subscription
  • Realm 이벤트 기록은 Realm에서 수행된 모든 읽기 및 쓰기를 기록하고 서버에 보고하는 데 사용할 수 있습니다. Realm을 여는 데 사용되는 Realm.ConfigurationeventConfiguration 속성을 설정하여 이벤트 기록을 활성화한 다음 Realm 에서 events 속성을 가진 Events 인스턴스를 가져옵니다.

    더 보기

    선언

    Swift

    public struct Events
  • Realm 이벤트 기록을 위한 구성 매개변수입니다.

    Realm 이벤트 기록을 활성화하려면 Realm.Configuration.eventConfiguration 을 nil이 아닌 EventConfiguration 로 설정합니다. 기본값으로 초기화된 구성은 유효하지만 일부 속성을 사용자 지정해야 할 수 있습니다.

    Realm 이벤트 기록을 사용하려면 이벤트를 기록할 앱의 서버에 정의된 스키마에 collection AuditEvent 을 포함해야 합니다. 스키마에는 다음 필드가 포함되어야 합니다.

    • _id: ObjectId
    • activity: String
    • event: String?
    • data: String?
    • timestamp: Date 또한 사용된 각 메타데이터 키에 대해 String? 필드가 있어야 합니다.
    더 보기

    선언

    Swift

    @frozen
    public struct EventConfiguration : Sendable

MapIndex

SingleMapEntry

  • 지도에 단일 키-값 항목을 보관하기 위한 container입니다. 튜플이 일반 인수로 표현할 수 없는 경우에 사용됩니다.

    더 보기

    선언

    Swift

    public struct SingleMapEntry<Key, Value> : _RealmMapValue, Hashable where Key : _MapKey, Value : RealmCollectionValue
  • Object 변경 알림에서 변경된 특정 속성에 대한 정보입니다.

    더 보기

    선언

    Swift

    @frozen
    public struct PropertyChange
  • 이 클래스는 Realm 모델 객체 스키마를 나타냅니다.

    Realm을 사용할 때 ObjectSchema 인스턴스를 사용하면 마이그레이션을 수행하고 데이터베이스의 스키마를 인트로스펙션할 수 있습니다.

    객체 스키마는 코어 데이터베이스의 테이블에 매핑됩니다.

    더 보기

    선언

    Swift

    @frozen
    public struct ObjectSchema : CustomStringConvertible
    extension ObjectSchema: Equatable
  • @Persisted는 Realm에서 managed해야 하는 객체 하위 클래스의 속성을 선언하는 데 사용됩니다.

    사용 예시:

    class MyModel: Object {
        // A basic property declaration. A property with no
        // default value supplied will default to `nil` for
        // Optional types, zero for numeric types, false for Bool,
        // an empty string/data, and a new random value for UUID
        // and ObjectID.
        @Persisted var basicIntProperty: Int
    
        // Custom default values can be specified with the
        // standard Swift syntax
        @Persisted var intWithCustomDefault: Int = 5
    
        // Properties can be indexed by passing `indexed: true`
        // to the initializer.
        @Persisted(indexed: true) var indexedString: String
    
        // Properties can set as the class's primary key by
        // passing `primaryKey: true` to the initializer
        @Persisted(primaryKey: true) var _id: ObjectId
    
        // List and set properties should always be declared
        // with `: List` rather than `= List()`
        @Persisted var listProperty: List<Int>
        @Persisted var setProperty: MutableSet<MyObject>
    
        // LinkingObjects properties require setting the source
        // object link property name in the initializer
        @Persisted(originProperty: "outgoingLink")
        var incomingLinks: LinkingObjects<OtherModel>
    
        // Properties which are not marked with @Persisted will
        // be ignored entirely by Realm.
        var ignoredProperty = true
    }
    

    indexed: true 을 이니셜라이저에 전달하여 Int, Bool, String, ObjectId 및 Date 속성을 인덱싱할 수 있습니다. 속성을 인덱싱하면 해당 속성에 대한 동일성 쿼리의 성능이 향상되지만, 쓰기 성능은 약간 저하됩니다. 현재 이 인덱스를 사용하는 다른 작업은 없습니다.

    primaryKey: true 을 이니셜라이저에 전달하여 속성을 클래스의 기본 키로 설정할 수 있습니다. 복합 기본 키는 지원되지 않으며, 둘 이상의 속성을 기본 키로 설정하면 런타임에 예외가 발생합니다. Int, String, UUID 및 ObjectId 속성만 기본 키로 만들 수 있으며, Atlas App Services를 사용할 때는 기본 키의 이름을 _id 로 지정해야 합니다. 프라이머리 키 속성은 관리되지 않는 객체에서만 변경할 수 있으며 Realm에 추가된 객체에서 변경하면 예외가 발생합니다.

    속성은 표준 Swift 구문을 사용하여 선택적으로 기본값을 지정할 수 있습니다. 기본값을 지정하지 않으면 처음 액세스할 때 값이 생성됩니다(모든 Optional 유형의 경우 nil , 숫자 유형의 경우 0, Bool의 경우 false, 빈 문자열/데이터의 경우, UUID 및 ObjectID에 대한 새로운 임의의 값). 목록 및 MutableSet 속성은 빈 List/MutableSet의 기본값으로 설정하여 정의 해서는 안 됩니다. 이렇게 하면 작동하지만 Realm에서 managed하는 객체에 액세스할 때 성능이 저하됩니다. 마찬가지로 ObjectID 속성을 ObjectID.generate() 로 초기화 해서는 안 되며, 이렇게 하면 추가 ObjectID가 생성된 후 Realm에서 읽을 때 삭제될 수 있습니다.

    클래스에 @Persisted 속성이 하나 이상 있으면 다른 모든 속성은 Realm에서 무시됩니다. 즉, managed 속성이 유지되지 않으며 쿼리 및 managed 속성이 필요한 정렬 및 집계와 같은 기타 작업에 사용할 수 없습니다.

    @Persisted는 객체 또는 EmbeddedObject 하위 클래스의 속성 이외의 다른 곳에서는 사용할 수 없으며 다른 위치에서 사용하려고 하면 런타임 오류가 발생합니다.

    더 보기

    선언

    Swift

    @propertyWrapper
    public struct Persisted<Value> where Value : _Persistable
    extension Persisted: Decodable where Value: Decodable
    extension Persisted: Encodable where Value: Encodable
    extension Persisted: OptionalCodingWrapper where Value: ExpressibleByNilLiteral

프로젝션

  • @Projected Realm에서 managed해야 하는 Projection 프로토콜의 속성을 선언하는 데 사용됩니다.

    사용 예시:

    public class Person: Object {
        @Persisted var firstName = ""
        @Persisted var lastName = ""
        @Persisted var address: Address?
        @Persisted var friends: List<Person>
        @Persisted var reviews: List<String>
    }
    
    class PersonProjection: Projection<Person> {
        @Projected(\Person.firstName) var firstName
        @Projected(\Person.lastName.localizedUppercase) var lastNameCaps
        @Projected(\Person.address.city) var homeCity
        @Projected(\Person.friends.projectTo.firstName) var firstFriendsName: ProjectedCollection<String>
    }
    
    let people: Results<PersonProjection> = realm.objects(PersonProjection.self)
    
    더 보기

    선언

    Swift

    @propertyWrapper
    public struct Projected<T, Value> : AnyProjected where T : RLMObjectBase

ProjectionObservable

  • Object 변경 알림에서 변경된 특정 속성에 대한 정보입니다.

    더 보기

    선언

    Swift

    @frozen
    public struct ProjectedPropertyChange
  • Property 인스턴스는 객체 스키마의 컨텍스트에서 Realm이 managed하는 속성을 나타냅니다. 이러한 속성은 Realm 파일에 유지되거나 Realm의 다른 데이터에서 계산될 수 있습니다.

    Realm을 사용하는 경우 속성 인스턴스를 사용하면 마이그레이션을 수행하고 데이터베이스의 스키마를 인트로스펙션할 수 있습니다.

    속성 인스턴스는 코어 데이터베이스의 열에 매핑됩니다.

    더 보기

    선언

    Swift

    @frozen
    public struct Property : CustomStringConvertible
    extension Property: Equatable
  • String 쿼리에 대한 옵션을 나타내는 열거형입니다.

    더 보기

    선언

    Swift

    public struct StringOptions : OptionSet, Sendable
  • Query 형식 안전 쿼리 조건자를 만드는 데 사용되는 클래스입니다.

    Query 을(를) 사용하면 Swift 스타일의 쿼리 표현식을 만든 다음 NSPredicate 로 구성할 수 있습니다. Query 클래스는 직접 인스턴스화해서는 안 되며 쿼리 표현식을 인수로 사용하는 클로저 내에서 매개변수로만 사용해야 합니다. 예:

    public func where(_ query: ((Query<Element>) -> Query<Element>)) -> Results<Element>
    

    그러면 위의 함수를 다음과 같이 사용합니다.

    let results = realm.objects(Person.self).query {
       $0.name == "Foo" || $0.name == "Bar" && $0.age >= 21
    }
    

    지원되는 술어 유형

    Prefix

    • NOT ! swift let results = realm.objects(Person.self).query { !$0.dogsName.contains("Fido") || !$0.name.contains("Foo") }

    비교

    • Equals ==
    • 같지 않음 !=
    • 보다 큼 >
    • 보다 작은 <
    • GreaterThanOrEqual >=
    • LessThanOrEqual <=
    • between .contains(_ range:)

    컬렉션

    • .contains(_ element:)
    • between .contains(_ range:)

    Map

    • @allKeys .keys
    • @allValues .values

    복합

    • 개인정보 정책에 &&
    • 또는 ||

    collection 애그리게이션

    • @avg .avg
    • @min .min
    • @max .max
    • @sum .sum
    • @count .count swift let results = realm.objects(Person.self).query { !$0.dogs.age.avg >= 0 || !$0.dogsAgesArray.avg >= 0 }

    기타

    • NOT !
    • subquery ($0.fooList.intCol >= 5).count > n
    더 보기

    선언

    Swift

    @dynamicMemberLookup
    public struct Query<T>
  • RealmCollection 인스턴스의 반복자(iterator)입니다.

    더 보기

    선언

    Swift

    @frozen
    public struct RLMIterator<Element> : IteratorProtocol where Element : RealmCollectionValue
  • RealmKeyedCollection 인스턴스의 반복자(iterator)입니다.

    더 보기

    선언

    Swift

    @frozen
    public struct RLMMapIterator<Element> : IteratorProtocol where Element : _RealmMapValue
  • 지도의 각 항목에 대해 (key: Key, value: Value) 쌍을 생성하는 Map<Key, Value> 의 반복기입니다.

    더 보기

    선언

    Swift

    @frozen
    public struct RLMKeyValueIterator<Key, Value> : IteratorProtocol where Key : _MapKey, Value : RealmCollectionValue

StateRealmObject

  • 관찰 가능 객체를 인스턴스화하는 속성 래퍼 유형입니다.

    @StateRealmObject 속성을 속성 선언에 적용하고 doc://com.apple.documentation/documentation 을 준수하는 초기 값을 제공하여 SwiftUI/View, SwiftUI/App 또는 SwiftUI/Scene 에서 상태 Realm 객체를 생성합니다. /Combine/ObservableObject 프로토콜:

    @StateRealmObject var model = DataModel()
    

    SwiftUI는 객체를 선언하는 구조체의 각 인스턴스에 대해 객체의 새 인스턴스를 한 번만 생성합니다. 관찰 가능한 영역 객체의 게시된 속성이 변경되면 SwiftUI는 해당 속성에 의존하는 모든 뷰의 부분을 업데이트합니다. 관리되지 않는 경우 속성을 객체 자체에서 읽고, 그렇지 않으면 기본 Realm에서 읽습니다. 값을 변경하면 뷰가 비동기적으로 업데이트됩니다.

    Text(model.title) // Updates the view any time `title` changes.
    

    상태 객체를 SwiftUI/ObservedRealmObject 속성이 있는 속성에 전달할 수 있습니다.

    $ 연산자를 사용하여 상태 객체의 속성 중 하나에 대한 SwiftUI/Binding 을(를) 가져옵니다. 객체의 속성 중 하나에 대한 양방향 연결을 생성하려는 경우 바인딩을 사용합니다. 예를 들어 SwiftUI/Toggle 가 모델에 저장된 isEnabled 라는 부울 값을 제어하도록 할 수 있습니다.

    Toggle("Enabled", isOn: $model.isEnabled)
    

    이렇게 하면 수정된 isEnabled 속성이 model 객체의 Realm에 기록됩니다.

    더 보기

    선언

    Swift

    @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
    @MainActor
    @propertyWrapper
    public struct StateRealmObject<T> : DynamicProperty where T : RealmSubscribable, T : ThreadConfined, T : Equatable

ObservedResults

  • 영역에서 쿼리의 결과를 나타내는 속성 래퍼 유형입니다.

    결과는 환경 값 realmConfiguration 에서 제공하는 영역 구성을 사용합니다.

    SwiftUI가 아닌 결과 collection과 달리 ObservedResults는 변경 가능합니다. ObservedResults collection에 대한 쓰기는 암시적으로 쓰기 트랜잭션 (write transaction)을 수행합니다. 관련 쿼리에서 필터링할 객체를 ObservedResults에 추가하면 객체가 영역에 추가되지만 ObservedResults에는 포함되지 않습니다.

    @ObservedResults var v SwiftUI에서 이$v 주어지면 은 BoundCollection 를 나타냅니다.

    더 보기

    선언

    Swift

    @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
    @propertyWrapper
    @MainActor
    public struct ObservedResults<ResultType> : DynamicProperty, BoundCollection where ResultType : KeypathSortable, ResultType : RealmFetchable, ResultType : _ObservedResultsValue, ResultType : Identifiable
  • 섹션으로 구분된 결과 collection을 나타내는 속성 래퍼 유형입니다.

    섹션화된 결과는 이니셜라이저에 configuration 이(가) 설정되지 않은 경우 환경 값 realmConfiguration 에서 제공하는 영역 구성을 사용합니다.

    @ObservedSectionedResults var v SwiftUI에서 이$v 주어지면 은 BoundCollection 를 나타냅니다.

    더 보기

    선언

    Swift

    @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
    @propertyWrapper
    @MainActor
    public struct ObservedSectionedResults<Key, ResultType> : DynamicProperty, BoundCollection where Key : _Persistable, Key : Hashable, ResultType : KeypathSortable, ResultType : RealmFetchable, ResultType : _ObservedResultsValue, ResultType : Identifiable

ObservedRealmObject

  • 관찰 가능 Realm Object 또는 List 을(를) 구독하고 관찰 가능 객체가 변경될 때마다 뷰를 무효화하는 속성 래퍼 유형입니다.

    더 보기

    선언

    Swift

    @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
    @MainActor
    @propertyWrapper
    public struct ObservedRealmObject<ObjectType>: DynamicProperty
    where ObjectType: RealmSubscribable & ThreadConfined & ObservableObject & Equatable

AsyncOpen

  • Realm을 비동기적으로 열고 지정된 프로세스의 상태를 알리는 현재 사용자에 대해 Realm.asyncOpen() 을(를) 시작하는 속성 래퍼 유형입니다.

    사용자가 이미 로그인한 후 또는 사용자가 로그인하려는 경우 SwiftUI/View 또는 SwiftUI/App 에 AsyncOpen을 추가합니다.

    @AsyncOpen(appId: "app_id", partitionValue: <partition_value>) var asyncOpen
    

    이렇게 하면 Realm을 사용 가능한 상태로 만드는 데 필요한 모든 작업을 수행하는 Realm.asyncOpen() 작업이 즉시 시작됩니다. (Realm.asyncOpen() 문서 참조)

    이 속성 래퍼는 진행률, 오류, 열린 영역과 같은 현재 Realm.asyncOpen() 프로세스의 상태를 게시하여 뷰를 업데이트하는 데 사용할 수 있습니다.

    struct AsyncOpenView: View {
        @AsyncOpen(appId: "app_id", partitionValue: <partition_value>) var asyncOpen
    
        var body: some View {
           switch asyncOpen {
           case .notOpen:
               ProgressView()
           case .open(let realm):
               ListView()
                  .environment(\.realm, realm)
           case .error(_):
               ErrorView()
           case .progress(let progress):
               ProgressView(progress)
           }
        }
    }
    

    이 열린 realm 는 나중에 속성 래퍼에서 열린 Realm의 데이터로 뷰를 채우는 데 사용할 환경 값으로 뷰에 삽입할 수 있습니다.

    ListView()
       .environment(\.realm, realm)
    
    더 보기

    선언

    Swift

    @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
    @MainActor
    @propertyWrapper
    public struct AsyncOpen : DynamicProperty

자동 열기

  • AutoOpen 은(는) 비동기적으로 Realm을 열려고 시도하지만 인터넷에 연결되어 있지 않은 경우 지정된 appId 및 partitionValue에 대해 열린 Realm을 반환하며 뷰 내에서 사용할 수 있습니다. 사용자가 이미 로그인한 후 또는 사용자가 로그인하려는 경우 SwiftUI/View 또는 SwiftUI/App 에 자동 열기를 추가합니다.

    @AutoOpen(appId: "app_id", partitionValue: <partition_value>, timeout: 4000) var autoOpen
    

    이렇게 하면 Realm을 사용 가능한 상태로 만드는 데 필요한 모든 작업을 수행하는 Realm.asyncOpen() 작업이 즉시 시작됩니다. (Realm.asyncOpen() 문서 참조)

    이 속성 래퍼는 진행률, 오류, 열린 영역과 같은 현재 Realm.asyncOpen() 프로세스의 상태를 게시하여 뷰를 업데이트하는 데 사용할 수 있습니다.

    struct AutoOpenView: View {
        @AutoOpen(appId: "app_id", partitionValue: <partition_value>) var autoOpen
    
        var body: some View {
           switch autoOpen {
           case .notOpen:
               ProgressView()
           case .open(let realm):
               ListView()
                  .environment(\.realm, realm)
           case .error(_):
               ErrorView()
           case .progress(let progress):
               ProgressView(progress)
           }
        }
    }
    

    이 열린 realm 는 나중에 속성 래퍼에서 열린 Realm의 데이터로 뷰를 채우는 데 사용할 환경 값으로 뷰에 삽입할 수 있습니다.

    ListView()
       .environment(\.realm, realm)
    

    이 속성 래퍼는 AsyncOpen 와 유사하게 동작하며 선언 및 사용 측면에서 완전히 동일하지만 오프라인 우선 접근 방식이 다르다는 점이 다릅니다.

    더 보기

    선언

    Swift

    @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
    @MainActor
    @propertyWrapper
    public struct AutoOpen : DynamicProperty
  • SyncConfiguration 은(는) Atlas App Services와 동기화하려는 Realms에 대한 구성 매개 변수를 나타냅니다.

    더 보기

    선언

    Swift

    @frozen
    public struct SyncConfiguration : Sendable
  • 제공된 이름과 인수를 사용하여 Atlas App Services 함수를 호출할 수 있는 인터페이스를 제공하는 구조체입니다.

    user.functions.sum([1, 2, 3, 4, 5]) { sum, error in
        guard case let .int64(value) = sum else {
            print(error?.localizedDescription)
        }
    
        assert(value == 15)
    }
    

    동적 멤버 이름(위 예제에서는 sum )은 함수 이름과 직접 연결됩니다. 첫 번째 인수는 함수에 제공될 인수의 BSONArray 입니다. 두 번째이자 마지막 인수는 함수 호출이 완료될 때 호출하는 완료 핸들러입니다. 이 핸들러는 메인이 아닌 글로벌 DispatchQueue 에서 실행됩니다.

    더 보기

    선언

    Swift

    @dynamicMemberLookup
    @frozen
    public struct Functions : Sendable
  • 사용자 기능에 대해 다음 구문을 활성화하는 구조입니다.

    guard case let .int32(sum) = try await user.functions.sum([1, 2, 3, 4, 5]) else {
       return
    }
    

    동적 멤버 이름(위 예제에서는 sum )은 함수 이름과 직접 연결된 @dynamicMemberLookup 에서 제공합니다.

    더 보기

    선언

    Swift

    @dynamicCallable
    public struct FunctionCallable : Sendable
  • SyncSubscription 커밋된 구독을 읽거나 제거/업데이트하는 데 사용할 수 있는 구독 세트를 쿼리하여 얻은 Flexible Sync 구독을 정의하는 데 사용됩니다.

    더 보기

    선언

    Swift

    @frozen
    public struct SyncSubscription
  • SubscriptionQuery 쓰기 구독 트랜잭션 내에서 추가/제거 또는 업데이트할 수 있는 명명된/이름 없는 쿼리 구독 쿼리를 정의하는 데 사용됩니다.

    더 보기

    선언

    Swift

    @frozen
    public struct QuerySubscription<T> where T : RealmSwiftObject
  • SyncSubscriptionSet SyncSubscription의 collection입니다. 이는 SyncSubscription를 추가하고 제거하기 위한 진입점입니다.

    더 보기

    선언

    Swift

    @frozen
    public struct SyncSubscriptionSet
    extension SyncSubscriptionSet: Sequence
  • 이 구조체는 SyncSubscriptionSet 에 대한 시퀀스 스타일 열거를 활성화합니다.

    더 보기

    선언

    Swift

    @frozen
    public struct SyncSubscriptionSetIterator : IteratorProtocol
  • 스레드에 한정된 객체에 대한 스레드 세이프 참고를 포함하는 스레드 간에 전달되기 위한 객체입니다.

    다른 스레드에서 대상 Realm의 스레드 세이프 참고를 확인하려면 Realm.resolve(_:) 으로 전달합니다.

    경고

    ThreadSafeReference 객체는 최대 한 번만 해석되어야 합니다. ThreadSafeReference 확인에 실패하면 참고 할당이 해제될 때까지 Realm의 소스 버전이 고정됩니다.

    참고

    소스 Realm의 버전에 대한 데이터는 모든 참고가 확인되거나 할당 해제될 때까지 유지되므로 수명이 짧은 ThreadSafeReference을(를) 선호합니다.

    ~를 참조하세요.

    ThreadConfined

    ~를 참조하세요.

    Realm.resolve(_:)

    더 보기

    선언

    Swift

    @frozen
    public struct ThreadSafeReference<Confined> where Confined : ThreadConfined
    extension ThreadSafeReference: Sendable