Comment renvoyer une valeur du modèle au contrôleur en utilisant le protocole [Swift5]

introduction

Cet article est une suite du ** [Swift5] View Controller Comment communiquer et transmettre des valeurs ** que j'ai publié la dernière fois. Si vous ne l'avez pas encore vu, je pense qu'il vaut mieux voir d'abord ici ▼. https://qiita.com/nkekisasa222/items/dabe806c23d3890a009f

Entrons dans le sujet principal!

Créer un protocole

Tout d'abord, écrivez le code.

SampleModel.swift



//① Créez un protocole ici
protocol DoneCatchProtocol {
    
    //(2) Spécifiez la valeur et le type que vous souhaitez renvoyer au contrôleur (chaîne cette fois)
    func catchSampleData(sampleValueA: String, sampleValueB: String, sampleValueC: String)
}

class SampleModel {

    var sampleValueA: String?
    var sampleValueB: String?
    var sampleValueC: String?

    //③ Créez une instance du protocole
    var doneCatchProtocol: DoneCatchProtocol?

    init(firstSampleValue: String, secondSampleValue: String, thirdSampleValue: String) {

        sampleValueA = firstSampleValue
        sampleValueB = secondSampleValue
        sampleValueC = thirdSampleValue
    }

    //④ Créez une méthode car le traitement est effectué dans Model
    func processingSampleModel {
    
        //⑤ Appelez le protocole créé ici et entrez la valeur
        self.doneCatchProtocol?.catchSampleData(sampleValueA: sampleValueA, sampleValueB: sampleValueB, sampleValueC: sampleValueC)
    }

Je vais résumer le flux.

(1) Créez un protocole côté modèle.
(2) Spécifiez la valeur clé et le type de valeur que vous souhaitez renvoyer.
③ Créez une instance du protocole.
④ Créez une méthode car le traitement est effectué dans Model
(5) Appelez le protocole et spécifiez la valeur que vous souhaitez appeler dans Controller.

Description côté contrôleur

Tout d'abord, écrivez le code.

SampleViewController.swift



//(1) Appelez le contrôleur afin qu'il puisse gérer le protocole.
class SampleViewController: UIViewController, DoneCatchProtocol {

    firstSampleValue  = "firstSampleValue"
    secondSampleValue = "secondSampleValue"
    thirdSampleValue  = "thirdSampleValue"

    //(4) Propriété de substitution de la valeur renvoyée par SampleModel
    var valueA: String?
    var valueB: String?
    var valueC: String?

    override func viewDidLoad() {
        super.viewDidLoad()

        startSampleModel()
    }

    func startSampleModel() {

      let sampleModel = SampleModel(firstSampleValue: firstSampleValue, secondSampleValue: secondSampleValue, thirdSampleValue: thirdSampleValue)

      //(3) Confiez-vous au protocole SampleModel et aux méthodes d'appel
      sampleModel.doneCatchProtocol = self
      sampleModel.processingSampleMode()
    }

    //(2) Il est généré automatiquement lorsque le protocole est appelé côté contrôleur.
    func catchSampleData(sampleValueA: String, sampleValueB: String, sampleValueC: String) {

        //⑤ Remplacez la valeur renvoyée par SampleModel
        valueA = sampleValueA
        valueB = sampleValueB
        valueC = sampleValueC
    }
}

Je vais résumer le flux.

(1) Appelez le contrôleur afin qu'il puisse gérer le protocole.
② Lorsque vous appelez le protocole dans ①, la méthode est automatiquement générée.
(3) Confiez-vous au protocole SampleModel et aux méthodes d'appel
④ Préparez une propriété pour remplacer la valeur renvoyée par SampleModel
⑤ Remplacez la valeur renvoyée par SampleModel

Vous pouvez maintenant utiliser la valeur traitée par Model dans Controller.

finalement

Dans l'article précédent et cet article, j'ai publié des articles sur la façon de communiquer d'un contrôleur à un modèle, de renvoyer le contenu traité par le modèle au contrôleur et de le gérer avec Controller. N'est-ce pas une méthode de développement souvent gérée dans le modèle MVC? Je pense que vous pouvez vous y référer par tous les moyens.

Merci d'avoir regardé jusqu'à la fin!

Recommended Posts

Comment renvoyer une valeur du modèle au contrôleur en utilisant le protocole [Swift5]
[Swift5] Comment communiquer de ViewController à Model et transmettre une valeur
Comment supprimer un contrôleur, etc. à l'aide d'une commande
Comment supprimer des éléments d'adaptateur personnalisés à l'aide d'un modèle personnalisé
9 Correspond à la valeur de retour
Comment créer un formulaire pour sélectionner une date dans le calendrier
[Swift] Comment envoyer une notification
Comment créer un fichier jar et un fichier war à l'aide de la commande jar
Comment exécuter l'exemple Kotlin Coroutine à partir de la ligne de commande
[Controller] Je veux récupérer la valeur numérique d'une colonne spécifique de la base de données (mon mémo)
Comment exécuter un contrat avec web3j
Comment trier une liste à l'aide du comparateur
Comment appeler le code Swift 5.3 depuis Objective-C
Comment passer la valeur à un autre écran
[Swift5] Comment créer un écran de démarrage
[Swift5] Comment mettre en œuvre une animation à l'aide de "lottie-ios"
[SpringBoot] Comment écrire un test de contrôleur
Comment exécuter un fichier GIF à partir de la ligne de commande Linux (Ubuntu)
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
Comment obtenir la valeur du paramètre (valeur de la propriété) à partir de la base de données dans Spring Framework
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Comment créer une route directement à partir de l'URL que vous souhaitez spécifier + α
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
Comment obtenir un heapdump à partir d'un conteneur Docker
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
[Swift] Comment générer un identifiant pour identifier de manière unique une certaine chose (en utilisant UUID)
[Ethereum] Comment exécuter un contrat en utilisant web3j-Part 2-
Comment mettre en œuvre la fonction de chapelure avec Gretel
[Swift] Comment changer l'ordre des éléments de barre dans le contrôleur de barre d'onglets [Débutant]
Transition vers un contrôleur de vue avec Swift WebKit
Comment générer une clé primaire à l'aide de @GeneratedValue
Comment trouver la valeur totale, la valeur moyenne, etc. d'un tableau à deux dimensions (tableau multidimensionnel) -java
Lors de l'insertion de Java vers MySQL, obtenez Auto_Increment_ID (valeur de numérotation automatique) comme valeur de retour
Passez un argument à la méthode et recevez le résultat de l'opération comme valeur de retour
[Swift] Comment afficher les caractères saisis sur le Widget via UserDefaults lors de l'utilisation du WidgetKit
3. Créez une base de données à laquelle accéder à partir du module Web
Sortie de la valeur maximale d'un tableau à l'aide de la sortie standard Java
[Swift] Comment lire des chansons de la bibliothèque musicale
Comment exécuter l'application SpringBoot en tant que service
Comment revenir à l'écran précédent par opération Swipe
Comment passer d'Eclipse Java à un fichier SQL
Comment écrire Scala du point de vue de Java
Comment déployer à partir d'une image Docker locale vers Heroku
[Java] Comment extraire le nom du fichier du chemin
[Java] Comment obtenir la valeur maximale de HashMap