AsyncOpen

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

Um tipo de wrapper de propriedade que inicia um Realm.asyncOpen() para o usuário atual, que abre um Realm de forma assíncrona e notifica os estados para o processo fornecido

Adicione o AsyncOpen ao seu SwiftUI/View ou SwiftUI/App depois que um usuário já estiver conectado ou se um usuário estiver conectado

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

Isso iniciará imediatamente uma operação Realm.asyncOpen() que executará todo o trabalho necessário para colocar o Realm em um estado utilizável. (consulte a documentação do Realm.asyncOpen())

Este invólucro de propriedade publicará estados do processo atual Realm.asyncOpen() , como progresso, erros e um Realm aberto, que pode ser usado para atualizar a visualização

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

Esse realm aberto pode ser injetado posteriormente na visualização como um valor de ambiente que será usado por nossos wrappers de propriedade para preencher a visualização com dados do Realm aberto

ListView()
   .environment(\.realm, realm)
  • Um Editor para AsyncOpenState emite um estado sempre que o estado asyncOpen é alterado.

    Declaração

    Swift

    @MainActor
    public var projectedValue: Published<AsyncOpenState>.Publisher { get }
  • Isso cancelará qualquer notificação dos estados do invólucro da propriedade

    Declaração

    Swift

    @MainActor
    public func cancel()
  • Inicialize o wrapper da propriedade

    Declaração

    Swift

    @MainActor
    public init<Partition>(appId: String? = nil,
                           partitionValue: Partition,
                           configuration: Realm.Configuration? = nil,
                           timeout: UInt? = nil) where Partition: BSON

    Parâmetros

    appId

    O identificador exclusivo do seu aplicativo Realm, se vazio ou nil , tentará recuperar o aplicativo singular mais recente em cache.

    partitionValue

    O valor BSON em que o Realm é particionado.

    configuration

    O Realm.Configuration usado ao criar o Realm, a configuração de sincronização do usuário para o valor da partição fornecido será definida como syncConfiguration; se estiver vazia, a configuração do usuário será usada.

    timeout

    O número máximo de milissegundos para permitir que uma conexão se torne totalmente estabelecida., se vazio ou nil , nenhum tempo limite de conexão está definido.

  • Inicialize o wrapper de propriedade para uma configuração de Flexible Sync.

    Declaração

    Swift

    @MainActor
    public init(appId: String? = nil,
                configuration: Realm.Configuration? = nil,
                timeout: UInt? = nil)

    Parâmetros

    appId

    O identificador exclusivo do seu aplicativo Realm, se vazio ou nil , tentará recuperar o aplicativo singular mais recente em cache.

    configuration

    O Realm.Configuration usado ao criar o Realm, a configuração de sincronização do usuário para o valor da partição fornecido será definida como syncConfiguration; se estiver vazia, a configuração do usuário será usada.

    timeout

    O número máximo de milissegundos para permitir que uma conexão se torne totalmente estabelecida., se vazio ou nil , nenhum tempo limite de conexão está definido.

  • Declaração

    Swift

    nonisolated public func update()