SafetyFirst - CRUD (modifier une Credential)

#1

Bonjour à tous,

Dans l’exercice SafetyFirst, nous avons effectué dans le cours 3 actions du CRUD : Create, Update et Delete.

J’ai essayé de réaliser l’ Update, mais sans grand succès…

Mon idée est d’utiliser EditTableViewController à partir du CredentialViewController en utilisant le même NavigationController.

Objectif n°1 : Afficher les données existante du Credential dans le EditTableViewController
Objectif n°2: Sauvegarder les modifications et retournée à l’écran du CredenditalViewController (et non pas CredentialListViewController

Voici ce que j’ai fait pour le moment (en plus du cours), mais qui ne semple pas marcher.

Dans le CredentialViewController :

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    // Liste des conditions pour affcher le détail d'une credential :
    // Si la destination est bien CredentialViewController
    if let editVC = segue.destination as? EditTableViewController,
        // Et si j'arrive à obtenir le credentials correspondant à cet index
        let cred = _credentials{
        // Alors je peux créer un Credential
        editVC.setCredentials(cred)
    }
}

Dans le EditTableViewController :

// Credentials définit depuis CredentialViewController
func setCredentials(_ credentials:Credentials) {
    print("setCredentials")
    _credentials = credentials
}

// Affichage des données du Crendential
override func viewDidLoad() {
    super.viewDidLoad()
    ui_titleField.text = _credentials?.title
    ui_loginField.text = _credentials?.login
    ui_passwordField.text = _credentials?.password
    ui_urlField.text = _credentials?.url
}

Merci par avance

NB : je n’ai pas trouvé la réponse dans le cours (J’ai peut-être mal cherché)

#2

Salut,

je ne suis pas certain de comprendre quel est le problème rencontré. Quand tu va dans l’écran d’édition, celui-ci n’est pas pré-rempli ? Ou est-ce le retour qui pose problème car tu ne vois pas tes changements en revenant dans l’écran d’affichage ?

#3

Bonjour Maxime,

C’est bien cela, lorsque je vais dans l’écran d’édition, il n’est pas pré-rempli.

#4

Hello, je relance mon sujet en posant la question différemment :

Peut-on utiliser le même ViewController pour faire un Create et un Update ?

#5

Salut,

désolé ta question est passée à la trappe avec la semaine de la WWDC j’ai été un peu noyé sous les emails :slight_smile: Tu as toujours besoin de réponse dessus ou tu as corrigé le soucis ?

C’est possible, à toi de t’organiser pour ne pas avec des if de partout. Tu peux par exemple utiliser l’héritage pour avoir le code partagé dans la classe mère et 2 contrôleurs plus petits qui en héritent et qui disposent uniquement du code spécifique à leur besoin (création ou édition)