Menu Docs

Página inicial do DocsDesenvolver aplicaçõesAtlas Device SDKs

Chamar uma função - Swift SDK

Nesta página

  • Chamar uma função por nome
  • Deixar assíncrono/Aguardar chamada de função

Importante

Certifique-se de limpar os dados do cliente para se proteger contra a injeção de código ao usar funções.

Considere uma Função do Atlas App Services denominada concatenate que recebe dois argumentos, os concatena e retorna o resultado:

// concatenate: concatenate two strings
exports = function(a, b) {
return a + b;
};

Para executar uma função do Swift SDK, use o objeto functions no usuário conectado no momento.

O objeto functions tem membros dinâmicos correspondentes a funções. Neste caso, functions.concatenate() refere-se à função concatenate . Passe um BSONArray de argumentos. O fechamento à direita é o manipulador de conclusão a ser chamado quando a chamada de função estiver concluída. Este manipulador é executado em um DispatchQueue global não principal.

Novidade na versão 10.16.0.

O Realm Swift SDK oferece versões async/await dos métodos User.function .

func testAsyncCallFunction() async {
let app = App(id: YOUR_APP_SERVICES_APP_ID)
// ... log in ...
let user = app.currentUser!
do {
// The dynamic member name `concatenate` is directly associated with the
// function name. The first argument is the `BSONArray` of arguments to be
// provided to the function - in this case, a string that represents a
// username and a string that represents an email domain.
let concatenatedString = try await user.functions.concatenate([AnyBSON("john.smith"), AnyBSON("@companyemail.com")])
print("Called function 'concatenate' and got result: \(concatenatedString)")
assert(concatenatedString == "john.smith@companyemail.com")
} catch {
print("Function call failed: \(error.localizedDescription)")
}
}

A partir das versões 10.15.0 e 10.16.0 do SDK do Realm Swift, muitas das APIs do Realm suportam a sintaxe async/await do Swift. Os projetos devem atender a estes requisitos:

Versão do Swift SDK
Requisito de versão do Swift
Sistema operacional compatível
10.25.0
Swift 5.6
iOS 13.x
10.15.0 ou 10.16.0
Swift 5.5
iOS 15.x

Se a sua aplicação acessar Realm em um contexto do async/await, marque o código com @MainActor para evitar falhas relacionadas a threading.

← Conectar a um Backend do Atlas App Services - Swift SDK