Swift é uma linguagem de programação compilada multiparadigma de propósito geral desenvolvida pela Apple, usada especificamente para desenvolvimento iOS. Ao escrever qualquer aplicativo Swift, os desenvolvedores geralmente desejam adicionar um recurso de banco de dados a seus aplicativos. É aqui que entra o Firestore.
O Firestore é um banco de dados de documentos NoSQL criado para escalonamento automático, alto desempenho e fácil desenvolvimento de aplicativos. No Firestore, todos os dados possuem um conjunto de pares de valores-chave e são armazenados em uma coleção.
Neste tutorial, aprenderemos como instalar e configurar o Firestore em nosso aplicativo Swift. O Firestore facilita o armazenamento de dados na nuvem enquanto gerencia a autenticação e a segurança sem exigir um desenvolvedor de back-end.
Firestone nos pré-requisitos do Swift
Para começar este tutorial, certifique-se de ter o seguinte:
Familiaridade com programação Swift Familiaridade com SwiftUI Xcode instalado em sua máquina local Online Swift Playground para usuários do Windows CocoaPods instalado
Configurando o projeto Swift
Vamos começar criando um novo aplicativo Swift. Abra o aplicativo Xcode e selecione Aplicativo para criar um novo projeto.
Nomeie o aplicativo, clique no botão Avançar e escolha onde para salvar seu aplicativo em sua máquina local.
Após configurar o projeto, devemos inicializar nossos pods e atualizar o
Podfile através de nosso terminal. Para fazer isso, primeiro vá para o diretório do projeto e execute este comando:
pod init; open Podfile
pod init inicializa os pods enquanto o Podfile aberto abre um terminal de configuração para atualizar o Podfile.
Devemos também incluir os pods do Firebase para Podfile incluindo o seguinte:
pod’Firebase/Core’pod’Firebase/Firestore’
Você pode ver esta configuração executada no terminal.
Depois de fazer isso, pressione Command + S para salvar o Podfile e feche o editor de terminal.
Trazendo dependências do Firestore com CocoaPods
A seguir, vamos instalar nossos pods por executando pod install para trazer as dependências do Firestore.
Se você receber o erro abaixo ao tentar instalar o pod, instale cocoapods em sua máquina local executando sudo gem install cocoapods. CocoaPods é um gerenciador de dependências para Swift que gerencia a instalação de dependências em nosso aplicativo Swift.
Após a instalação, use o comando de configuração do pod para atualizar os cocoapods.
Se o erro persistir, use o brew para install cocoapods com o seguinte comando:
brew install cocoapods
Em seguida, use este comando para sobrescrever a versão anterior:
brew link–overwrite cocoapods
Feito isso, você pode executar o pod instale para instalar as dependências do nosso aplicativo.
Depois de instalar os pods, abra o diretório do projeto e abra o arquivo funfirebase.xcworkspace no Xcode.
Configurando o Firebase
Agora , vá para https://console.firebase.google.com/ e clique em Criar um projeto forte. Insira um nome de projeto, como “funfirebase”.
Clique no botão Continuar , desative o Google Analytics para este projeto e clique em Criar projeto botão.
Depois de terminar de configurar o projeto, clique no ícone iOS para iniciar o prompt de configuração.
Adicionar o identificador do pacote de aplicativos e clique no botão Registrar aplicativo . O apelido do aplicativo e o ID da App Store são opcionais, portanto, podemos ignorá-los.
Em seguida, clique no botão Baixar GoogleService-Info.plist para baixar o configuração do iOS Depois de baixar esse arquivo, mova-o para o projeto raiz do Xcode.
Configurando o Firestore SDK
O Firestore SDK gerencia o conjunto completo de dados em seu Cloud Firestore projeto. Para começar a configurar isso, abra o arquivo funfirebaseApp.swift, crie uma extensão funfirebaseApp e adicione um método initFirebase.
Extensões em Swift adicionam novas funcionalidades a um classe, estrutura , enumeração ou tipo de protocolo existente:
extension funfirebaseApp {private func initFirebase () {FirebaseApp.configure ()}}O método FirebaseApp.config configura um aplicativo Firebase padrão para nosso aplicativo. Temos que inicializar o método initFirebase invocando-o em nossa estrutura funfirebaseApp:
@main struct funfirebaseApp: App {//init firebase init () {initFirebase ()} var body: some Scene {WindowGroup {ContentView ()} }}
Construindo um aplicativo de tarefas Swift com o Firestore
Vamos construir um aplicativo de tarefas simples, que adicionará uma lista de tarefas para os usuários. O objetivo de construir este projeto é nos ajudar a entender como adicionar e recuperar dados do Cloud Firestore.
Vamos começar criando uma IU simples para nosso aplicativo e usar SwiftUI para nossa implementação. Primeiro, abra o arquivo ContentView.swift e atualize-o para o seguinte:
////ContentView.swift//funfirebase////Criado por Wisdom Ekpot em 19/07/21.//import SwiftUI struct ContentView: View {@State private var task: String=””var body: some View {//campo de entrada TextField (“Comece a digitar uma tarefa…”, text: $ task).padding ().border (Color.black).frame (minWidth: 100, idealWidth: 150, maxWidth: 240, minHeight: 30, idealHeight: 40, maxHeight: 50, alinhamento:.leading)//botão para adicionar Botão (ação: {imprimir (“Tarefa adicionada \ (tarefa)”)}) {Text (“Adicionar Tarefa”)}.padding ().foregroundColor (.white).background (Color.black).cornerRadius (5)//NavigationView {List {Text (“Read”) Text (“Execise”) Text (“Text John”) Text (“Say hello”)}.navigationTitle (“All Tasks”)}}} struct ContentView_Previews: PreviewProvider {static var previews: some View {Group {ContentView ()}}}
Vamos analisar o código. Começamos criando nosso campo de entrada:
TextField (“Comece a digitar uma tarefa…”, texto: $ tarefa).padding ().border (Color.black).frame (minWidth: 100, idealWidth: 150 , maxWidth: 240, minHeight: 30, idealHeight: 40, maxHeight: 50, alinhamento:.leading)
Usando a propriedade TextField, criamos campos de entrada em Swift, incluindo minWidth e minHeight definidos e um espaço reservado padrão. A variável de tarefa, definida na variável de corpo, armazena o estado do campo de entrada:
@State private var task: String=””
A próxima coisa que adicionaremos é um botão para adicionar uma tarefa a fazer ao nosso banco de dados Firestore:
//botão para adicionar Botão (ação: {print (“Tarefa adicionada \ (tarefa)”)}) {Texto (“Adicionar tarefa”)}.padding ().foregroundColor (.white ).background (Color.black).cornerRadius (5)
Isso atribui uma ação ao botão para imprimir o valor do campo de entrada.
Em seguida, use a propriedade List para listar todos os-do items:
//lista todos os itens NavigationView {List {Text (“Read”) Text (“Execise”) Text (“Text John”) Text (“Say hello”)}.navigationTitle (“All Tasks”)}
Com a lista definida, podemos agora visualizar nosso aplicativo em qualquer dispositivo simulador. Este tutorial usa o iPhone 11 para visualizar o aplicativo e deve ser assim:
Adicionando as funcionalidades do aplicativo
Continuaremos criando o get e add funcionalidades. Com essas duas funcionalidades adicionadas, os usuários podem adicionar uma nova tarefa a fazer e obter a lista de todas as tarefas pendentes no aplicativo.
Vamos começar criando um modelo para nossa lista de pendências. Crie um diretório de modelos. Dentro, crie um arquivo Todo.swift e adicione o seguinte trecho de código:
import SwiftUI struct Todo: Codable, Identifiable {var id: String=UUID (). UuidString var name: String? }
Nossa lista de tarefas segue esta estrutura de dados.
Em seguida, crie um diretório viewModel, dentro do diretório, crie um arquivo TodoViewModel.swift e adicione o seguinte código:
import Foundation import FirebaseFirestore class TodoViewModel: ObservableObject {@Published var todos=[Todo] () private var db=Firestore.firestore () func getAllData () {db.collection (“todos”). addSnapshotListener {(querySnapshot, erro) em guarda let documents=querySnapshot?.documents else {print (“No documents”) return} self.todos=documents.map {(queryDocumentSnapshot)-> Todo em let data=queryDocumentSnapshot.data () let name=data [“name”] as ? Corda ??””return Todo (name: name)}}} func addNewData (name: String) {do {_=try db.collection (“todos”). addDocument (data: [“name”: name])} catch {print (error.localizedDescription)}}}
Temos duas funções aqui: a função getAllData obtém todos os dados de nosso banco de dados Firestore e a função addNewData adiciona um novo item ao banco de dados Firestore.
Para usar o arquivo TodoViewModel.swift, devemos conectá-lo ao nosso arquivo ContentView.swift dentro de nossa estrutura ContentView:
@ObservedObject private var viewModel=TodoViewModel ()
Com isso definido, devemos atualizar nosso elemento List para o seguinte:
List (viewModel.todos) {todo in VStack (alinhamento:.leading) {Text (todo.name ??””)}}.onAppear () {self.viewMod el.getAllData ()}.navigationTitle (“All Tasks”)
Claro, isso renderiza uma lista em branco porque não temos nenhuma tarefa a fazer em nosso banco de dados.
Para adicionar o tarefas pendentes, vá para o console do Firebase e clique em Firestore Banco de dados . Clique no botão Criar banco de dados e selecione o botão de opção Iniciar no modo de teste .
Feito isso, podemos começar a adicionar tarefas pendentes em nosso banco de dados.
Clique no link Iniciar coleção e adicione “todos” como o ID da coleção.
Agora, comece a adicionar novos itens de tarefas ao banco de dados. Sempre defina o nome do campo como nome .
Clicar no botão Salvar atualiza automaticamente o aplicativo com nossas alterações.
Implementando a funcionalidade de adição
Também devemos atualizar nosso botão para chamar a função addNewData que criamos. Devemos adicionar um nome de tarefa como um parâmetro, que é recuperado do campo de entrada.
Para fazer isso, modifique o botão para o seguinte:
Botão (ação: {self.viewModel.addNewData (nome: tarefa)}) {Text (“Adicionar Tarefa”)}.padding ().foregroundColor (.white).background (Color.black).cornerRadius (5)
Agora, ao clicar no botão, ele obtém o valor do campo de entrada e passa-o no parâmetro addNewData, armazenando-o na coleção Firestore.
Conclusão
Usar o Firestore em nosso aplicativo Swift é muito fácil e direto. Neste artigo, aprendemos como usar o SwiftUI para configurar uma interface de usuário para nosso aplicativo e como adicionar e recuperar dados do Cloud Firestore.
Clique aqui para obter o código-fonte deste aplicativo .