Página inicial do Docs → Desenvolver aplicações → Atlas Device SDKs
Chamar uma função - Swift SDK
Chamar uma função por nome
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.
Deixar assíncrono/Aguardar chamada de função
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.