Introdução
Neste tutorial, você aprenderá como desenvolver um aplicativo de lista de tarefas utilizando Swift com as tecnologias SwiftUI e Combine. O aplicativo permitirá que os usuários adicionem, removam e visualizem tarefas de forma reativa e intuitiva. Abordaremos cada passo do processo, desde a configuração inicial do projeto até a implementação da lógica de negócios e design da interface do usuário. Além de aprender a trabalhar com listas reativas, você dominará conceitos cruciais de gerenciamento de estado e binding em SwiftUI, tornando seu aplicativo não apenas funcional, mas também responsivo. Ideal para desenvolvedores que desejam aprimorar suas habilidades em desenvolvimento iOS, este guia lhe proporcionará um conhecimento prático e aplicável para criar apps modernos.
Etapas
Configuração do Ambiente de Desenvolvimento
Antes de começar, certifique-se de ter instalado o Xcode mais recente em sua máquina. O Xcode é a IDE oficial para desenvolvimento em Swift e proporcionará todas as ferramentas necessárias para o projeto.
commands# Verificar a versão do Xcode
xcodebuild -versionCriação do Projeto no Xcode
Abra o Xcode e inicie um novo projeto selecionando ‘App’ na seção ‘iOS’. Dê um nome ao seu projeto, como ‘ListaDeTarefas’, e escolha Swift como a linguagem de programação. Certifique-se de que ‘SwiftUI’ esteja selecionado como a opção de interface.
Modelagem da Tarefa
Crie uma estrutura que representará a nossa tarefa. Adicione um arquivo Swift chamado ‘Task.swift’ e adicione as propriedades necessárias.
Task.swiftimport Foundation struct Task: Identifiable { var id = UUID() var title: String var isCompleted: Bool = false }
Criando o ViewModel
Implemente um ViewModel que irá gerenciar a lista de tarefas e sua lógica de negócios. Crie um arquivo chamado ‘TaskViewModel.swift’. Utilize o Combine para lidar com a reatividade.
TaskViewModel.swiftimport SwiftUI import Combine class TaskViewModel: ObservableObject { @Published var tasks: [Task] = [] func addTask(title: String) { let newTask = Task(title: title) tasks.append(newTask) } func removeTask(atOffsets indices: IndexSet) { tasks.remove(atOffsets: indices) } }
Construindo a Interface com SwiftUI
Agora vamos criar a interface do usuário. Edite o ‘ContentView.swift’ para incluir uma lista que exibe as tarefas e um campo para adicionar novas tarefas.
ContentView.swiftimport SwiftUI struct ContentView: View { @ObservedObject var viewModel = TaskViewModel() @State private var newTaskTitle: String = "" var body: some View { NavigationView { VStack { TextField("Nova Tarefa", text: $newTaskTitle) .textFieldStyle(RoundedBorderTextFieldStyle()) .padding() Button(action: { viewModel.addTask(title: newTaskTitle) newTaskTitle = "" }) { Text("Adicionar") } List { ForEach(viewModel.tasks) { task in Text(task.title) } .onDelete(perform: viewModel.removeTask) } } .navigationTitle("Lista de Tarefas") } } }
Testando a Aplicação
Compile e execute seu aplicativo no simulador do Xcode. A interface deve permitir adicionar e remover tarefas da lista. Novas tarefas devem aparecer imediatamente na lista, demonstrando a reatividade do Combine.
commands# Compilar e executar a aplicação
Command + RImplementação de Testes Unitários
Crie testes para o ViewModel para garantir que suas funções de adicionar e remover tarefas estão funcionando adequadamente. Adicione um novo arquivo chamado ‘TaskViewModelTests.swift’.
TaskViewModelTests.swiftimport XCTest @testable import ListaDeTarefas class TaskViewModelTests: XCTestCase { func testAddTask() { let viewModel = TaskViewModel() viewModel.addTask(title: "Testar") XCTAssertEqual(viewModel.tasks.count, 1) XCTAssertEqual(viewModel.tasks[0].title, "Testar") } func testRemoveTask() { let viewModel = TaskViewModel() viewModel.addTask(title: "Testar") viewModel.removeTask(atOffsets: IndexSet(integer: 0)) XCTAssertEqual(viewModel.tasks.count, 0) } }
Executando os Testes
Utilize o Xcode para rodar seus testes. Vá até o menu superior, clique em ‘Product’, depois ‘Test’, ou utilize o atalho Command + U para verificar se todos os testes estão passando.
Conclusão
Neste tutorial, você aprendeu a desenvolver um aplicativo de lista de tarefas utilizando SwiftUI e Combine. Através da configuração do ambiente de desenvolvimento, criação da estrutura de dados, implementação do ViewModel e construção da interface do usuário, você foi capaz de criar um app reativo e funcional. Além disso, a adição de testes unitários solidifica a confiabilidade do seu código. Com esta base, você pode explorar mais funcionalidades, como persistência de dados ou integração com APIs, ampliando ainda mais seus conhecimentos em desenvolvimento iOS.