Junior
Que formas de transmissão de dados conhece?
sobes.tech IA
Resposta da IA
- Propriedades e Inicializadores: Transferência de dados através de propriedades e inicializadores ao criar um objeto.
- Segues (para Storyboards): Transferência de dados entre View Controllers durante a navegação usando
prepare(for:sender:). - Delegação: Implementação de um protocolo que permite a um objeto (delegado) receber notificações e dados de outro objeto.
- NotificationCenter: Mecanismo de publicação-assinatura para enviar notificações de difusão com dados arbitrários.
- Observação de Valor-Chave (KVO): Mecanismo para observar mudanças nas propriedades dos objetos.
- Closures/Callbacks: Transferência de dados através de closures que são executadas de forma assíncrona ou após um evento específico.
- Singletons: Instância compartilhada de uma classe, acessível de qualquer parte da aplicação, para armazenar e trocar dados.
- User Defaults: Armazenamento de pequenos volumes de dados do utilizador em armazenamento persistente.
- Core Data/Realm/SQLite: Armazenamento e gestão de dados estruturados no dispositivo.
- File Storage: Guardar dados em ficheiros no disco (por exemplo, documentos, imagens).
- CloudKit: Serviço na nuvem para armazenar e sincronizar dados entre dispositivos iCloud.
- Networking (APIs): Transferência de dados entre a aplicação e o servidor através da rede.
- Environment Objects (SwiftUI): Fornecimento de objetos partilhados na hierarquia de vistas.
- State Objects (SwiftUI): Gestão do estado local da vista.
- Observed Objects (SwiftUI): Gestão de objetos aos quais a vista está inscrita.
Exemplo de uso de Segues:
// No View Controller de origem
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let destinationVC = segue.destination as? DetailViewController {
destinationVC.dataToReceive = "Olá do VC de origem"
}
}
}
Exemplo de uso de Delegação:
// Protocolo do delegado
protocol DataDelegate: AnyObject {
func didReceiveData(_ data: String)
}
// Classe que envia dados
class SendingViewController: UIViewController {
weak var delegate: DataDelegate?
func sendData() {
delegate?.didReceiveData("Dados enviados via delegado")
}
}
// Classe que recebe dados
class ReceivingViewController: UIViewController, DataDelegate {
func didReceiveData(_ data: String) {
print("Dados recebidos: \(data)")
}
}
Exemplo de uso de NotificationCenter:
// Envio de notificação
NotificationCenter.default.post(name: Notification.Name("myDataNotification"), object: nil, userInfo: ["dataKey": "Dados do NotificationCenter"])
// Recebimento de notificação
NotificationCenter.default.addObserver(self, selector: #selector(handleDataNotification(_:)), name: Notification.Name("myDataNotification"), object: nil)
@objc func handleDataNotification(_ notification: Notification) {
if let receivedData = notification.userInfo?["dataKey"] as? String {
print("Dados recebidos: \(receivedData)")
}
}
// Não esquecer de remover o observador
deinit {
NotificationCenter.default.removeObserver(self)
}