IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Swift Discussion :

passage de données entre deux ViewController avec performSegue


Sujet :

Swift

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut passage de données entre deux ViewController avec performSegue
    Bonjour.
    Pour un stage, je dois ouvrir une tableView en fonction des données d'une autre.
    J'a trouvé comment envoyer des données simples d'un ViewController à un autre et à afficher le résultat dans un label.
    J'ai ensuite essayé de voir si je peux remplir un tableau de caractéristiques pour ces héros en fonction de la valeur choisie dans la TableView du premier controller avec des conditions if.
    C'est là que je bloque.
    Le code marche bien avec le label, mais quand j'essaie de l'enlever, mon deuxième controller ne récupère plus les données du row choisie dans ma tableView.
    Le label n'a pourtant rien à voir avec la récupération des données, non ?

    çà fait plusieurs jours que je suis sur cette tâche et là, je sèche.

    Si quelqu'un peut m'aider. Merci d'avance.

    Voici le code pour mes ViewControllers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    import UIKit
     
    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
     
        @IBOutlet weak var tableView: UITableView!
     
        var avengers = ["Thor", "Hulk", "Iron Man", "Capt. America", "Black Widow"]
     
        override func viewDidLoad() {
     
            super.viewDidLoad()
     
            tableView.delegate = self
            tableView.dataSource = self
     
        }
     
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
     
            return avengers.count
     
        }
     
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     
            let cell = UITableViewCell()
            print(indexPath.row)
            cell.textLabel?.text = avengers[indexPath.row]
     
            return cell
     
        }
     
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
     
            performSegue(withIdentifier: "oneSegue", sender: avengers[indexPath.row])
     
        }
     
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     
            let guest = segue.destination as! SecondViewController
            guest.hero = sender as! String
     
        }
     
        func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
     
            if editingStyle == UITableViewCellEditingStyle.delete {
     
                avengers.remove(at:indexPath.row)
                tableView.deleteRows(at:[indexPath], with: .fade)
     
            }
     
        }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    import UIKit
     
    class SecondViewController: UIViewController {
     
        //@IBOutlet weak var textLabel: UILabel!
        var hero = "superman"
        //var getAvengersCarac = ["un", "deux", "trois", "quatre", "cinq"]
     
        override func viewDidLoad() {
            super.viewDidLoad()
            print(hero)
            //textLabel.text = hero
     
            if(hero == "Thor") {
     
                //getAvengersCarac[0] = "gris"
                //getAvengersCarac[1] = "marteau"
     
            }
            else if(hero == "Hulk") {
     
                //getAvengersCarac[0] = "vert"
                //getAvengersCarac[1] = "super force"
     
            }
            else if(hero == "Iron Man") {
     
                //getAvengersCarac[0] = "rouge"
                //getAvengersCarac[1] = "armure de combat"
     
            }
            else if(hero == "Capt. America") {
     
                //getAvengersCarac[0] = "bleu"
                //getAvengersCarac[1] = "bouclier"
     
            }
            else if(hero == "Black Widow") {
     
                //getAvengersCarac[0] = "noir"
                //getAvengersCarac[1] = "agilité"
     
            }
     
        }
     
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
     
    }

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 23
    Points : 26
    Points
    26
    Par défaut
    Bonjour,
    Il faut preciser quelle ligne de votre tableview vous voulez transmettre à votre deuxieme controller. Soit dans votre fonction Prepareseuge ou Performe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     
     
        // Pour preciser quel Segue vous allez utiliser ( on peut avoir plusieurs segues dans un controller)
        if (segue.identifier == "oneSegue")
        {
            let guest = segue.destination as! SecondViewController
            guest.hero = sender as! String
     
            if let indexPath = self.tableView.indexPathForSelectedRow {
     
     
            guest.hero =  avengers[indexPath.row]
    }
    }
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci de votre réponse.

    Je suis effectivement arrivé à transmettre mes données d'un controller à l'autre.
    Néanmoins, un autre problème s'est présenté.
    Lorsque je clique sur une case de ma première tableView, j'envoie des données à mon second controller et je dois alors déclencher une nouvelle async task
    pour récupérer d'autres données(catégories de meubles : canapé, table basse...), en fonction de la donnée transmise (en l'occurence le nom d'une salle de la maison("salon", "salle de bain", "cuisine") par la première tableView.

    Mon problème est le suivant : je n'arrive pas à rentrer dans mon async Task à l'issue du performSegue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
     
     
    import UIKit
     
    class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
     
        @IBOutlet weak var collectionView: UICollectionView!
     
        var familyArray:[Family] = []
     
        public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
     
            return familyArray.count
     
        }
     
        func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
     
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CustomCollectionViewCell
            let url:URL = URL(string: "https://byme.s3-eu-west-1.amazonaws.com/data/pictofamily/" + familyArray[indexPath.row].picto + ".png")!
            var data:Data
     
            do {
                data = try Data(contentsOf: url)
                cell.imgCell.image  = UIImage(data: data)
            }
            catch let err {
                print("Error : \(err.localizedDescription)")
            }
     
            cell.lblCell.text = familyArray[indexPath.row].name
     
            return cell
     
        }
     
        func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
     
            //performSegue(withIdentifier: "oneSegue", sender: categoryArray)
            performSegue(withIdentifier: "oneSegue", sender: familyArray[indexPath.row].name)
     
        }
     
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     
            let detail = segue.destination as! SecondViewController
            detail.familySelect = sender as! String
            //detail.categoryDetail = sender as! [Category]
     
        }
     
        func downloadJsonWithTask(completion: @escaping (Bool, Any?, Error?) -> Void) {
     
            DispatchQueue.global().asyncAfter(deadline: .now() + 3) {
     
                let serverURL = URL(string:"https://byme.s3-eu-west-1.amazonaws.com/data/appConfig/999_AR/prod/1/furniture.json")
     
                do {
     
                    let data = try Data(contentsOf: serverURL!)
                    let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as AnyObject
     
                    var datas = [AnyObject]()
     
                    if let families = json["families"] as? [[String:Any]] {
     
                        for family in families {
     
                            var f:Family!
                            f = Family(nameFamily:family["familyName"] as! String, picto: family["picto"] as! String)
                            self.familyArray.append(f)
     
                        }
     
                    }
     
                    //datas.append(self.familyArray as AnyObject)
     
                    DispatchQueue.main.async {
     
                        //completion(true, datas, nil)
                        completion(true, self.familyArray, nil)
     
                    }
     
                }
                catch {
     
                    DispatchQueue.main.async {
     
                        completion(false, nil, error)
     
                    }
     
                }
     
            }
     
        }
     
        /*func downloadJsonWithTask(completion: @escaping (Bool, Any?, Error?) -> Void) {
            
            DispatchQueue.global().asyncAfter(deadline: .now() + 3) {
                
                let serverURL = URL(string:"https://byme.s3-eu-west-1.amazonaws.com/data/appConfig/999_AR/prod/1/furniture.json")
                
                do {
                    
                    let data = try Data(contentsOf: serverURL!)
                    let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as AnyObject
                    
                    var datas = [AnyObject]()
                    
                    if let families = json["families"] as? [[String:Any]] {
                        
                        for family in families {
                            
                            var f:Family!
                            f = Family(nameFamily:family["familyName"] as! String, picto: family["picto"] as! String)
                            self.familyArray.append(f)
                            
                            if let catego = family["categories"] as? [[String:Any]] {
                                
                                for categorix in catego {
                                    
                                    if let cat = categorix["categories"] as? [[String: Any]] {
                                        
                                        for ct in cat {
                                            
                                            var c:Category!
                                            let categoryName = categorix["categoryName"] as! String
                                            let pictoUUID = categorix["pictoUUID"] as! String
                                            //guard let tagsName = ct["tags"] as? [String] else { return }
                                            let familyName = family["familyName"] as! String
                                            c = Category(nameCategory: categoryName, pictoUUID: pictoUUID, familyCategory: familyName)
                                            self.categoryArray.append(c)
                                            
                                        }
                                        
                                    }
                                    
                                }
                                
                            }
                            
                        }
                        
                    }
                    
                    datas.append(self.familyArray as AnyObject)
                    datas.append(self.categoryArray as AnyObject)
                    
                    DispatchQueue.main.async {
                        
                        completion(true, datas, nil)
                        
                    }
                    
                }
                catch {
                    
                    DispatchQueue.main.async {
                        
                        completion(false, nil, error)
                        
                    }
                    
                }
            }
            
        }*/
     
        override func viewDidLoad() {
            super.viewDidLoad()
     
            downloadJsonWithTask { (success, response, error) in
     
                if success {
     
                    //guard let datas = response as? [AnyObject] else { return }
     
                    //var familyRecup = [Family]()
     
                    /*for (index, data) in datas.enumerated() {
                    
                            familyRecup = data as! [Family]
                        
                    }*/
     
                    //self.familyArray = familyRecup
     
                    DispatchQueue.main.async {
     
                        self.collectionView.reloadData()
     
                    }
     
                }
                else if let error = error {
     
                    print(error)
     
                }
     
            }
     
            /*downloadJsonWithTask { (success, response, error) in
                
                if success {
                    
                    guard let datas = response as? [AnyObject] else { return }
                    
                    var familyRecup = [Family]()
                    var categoryRecup = [Category]()
                    
                    for (index, data) in datas.enumerated() {
                        
                        if(index == 0) {
                            
                            familyRecup = data as! [Family]
                            
                        }
                        else if(index == 1) {
                            
                            categoryRecup = data as! [Category]
                            
                        }
                        
                    }
                    
                    self.familyArray = familyRecup
                    
                    DispatchQueue.main.async {
                        
                        self.collectionView.reloadData()
                        
                    }
                    
                }
                else if let error = error {
                    
                    print(error)
                    
                }
                
            }*/
     
            collectionView.dataSource = self
            collectionView.delegate = self
     
        }
     
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
     
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
     
     
    import UIKit
     
    class SecondViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
     
        @IBOutlet weak var collectionView: UICollectionView!
     
        var categoryDetail: [Category] = []
        var familySelect: String = "salon"
     
        func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
     
            return familySelect.count
     
         }
     
         func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
     
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "catCell", for: indexPath) as! CustomCollectionViewCell
            let url:URL = URL(string: "https://byme.s3-eu-west-1.amazonaws.com/data/geometries/" + categoryDetail[indexPath.row].pictoUUID + "/Thumbnails/256.jpg")!
     
                var data:Data
     
                    do {
     
                        data = try Data(contentsOf: url)
                        cell.imgCell.image  = UIImage(data: data)
     
                    }
                    catch let err {
     
                        print("Error : \(err.localizedDescription)")
     
                    }
     
                    cell.lblCell.text = categoryDetail[indexPath.row].categoryName
     
                        return cell
     
         }
     
         func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
     
                //performSegue(withIdentifier: "twiceSegue", sender: tagsArray)
     
         }
     
         override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     
                let detail = segue.destination as! ThirdViewController
                //detail.tagsRecup = sender as! [[String]]
     
         }
     
        func downloadJsonWithTask(completion: @escaping (Bool, Any?, Error?) -> Void) {
     
            DispatchQueue.global().asyncAfter(deadline: .now() + 3) {
     
                let serverURL = URL(string:"https://byme.s3-eu-west-1.amazonaws.com/data/appConfig/999_AR/prod/1/furniture.json")
     
                do {
     
                    let data = try Data(contentsOf: serverURL!)
                    //let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as AnyObject
     
                    var datas = [AnyObject]()
     
                    /*if let families = json["families"] as? [[String:Any]] {
                        
                        for family in families {
                            
                            var familyName = family["familyName"] as? String
                            
                                if familyName == self.familySelect as? String {
                                
                                    if let categories = family["categories"] as? [String:Any] {
                                    
                                        if let sub_categories = categories["categories"] as? [String:Any] {
                                            
                                            var c:Category!
                                            c = Category(nameCategory:family["familyName"] as! String, pictoUUID: family["picto"] as! String)
                                            self.categoryDetail.append(c)
                                            
                                        }
                                    
                                    }
                                
                                }
                            
                        }
                        
                    }*/
     
                        //datas.append(self.categoryDetail as AnyObject)
     
                            /*DispatchQueue.main.async {
                        
                                completion(true, self.categoryDetail, nil)
                        
                            }*/
     
     
                }
                catch {
     
                    DispatchQueue.main.async {
     
                        completion(false, nil, error)
     
                    }
     
                }
     
            }
     
        }
     
        override func viewDidLoad() {
            super.viewDidLoad()
     
            downloadJsonWithTask { (success, response, error) in
     
                if success {
     
                    //guard let datas = response as? [AnyObject] else { return }
                    guard let datas = response as? [Category] else { return }
     
                    var categoryRecup = [Category]()
     
                    /*for (index, data) in datas.enumerated() {
                        
                        //categoryRecup = data as! [Category]
                        categoryRecup.append(data as! Category)
                        
                    }*/
     
                    //self.tagsArray = tagsRecup
     
                    DispatchQueue.main.async {
     
                        self.collectionView.reloadData()
     
                    }
     
                }
                else if let error = error {
     
                    print(error)
     
                }
     
            }
     
            //collectionView.dataSource = self
            //collectionView.delegate = self
     
        }
     
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
     
        }
     
    }

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je clique sur l'image de la première tableView, je passe alors dans la fonction performSegue, qui m'amène dans le second ViewController.

    Je passe sur les trois premières lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    @IBOutlet weak var collectionView: UICollectionView! 
    var categoryDetail: [Category] = [] 
    var familySelect: String = "salon"
    puis dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     
            let detail = segue.destination as! SecondViewController
            detail.familySelect = sender as! String
            //detail.categoryDetail = sender as! [Category]
     
     }
    Je repasse alors sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    var familySelect: String = "salon"
    puis à nouveau sur celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     @IBOutlet weak var collectionView: UICollectionView!
    J'arrive ensuite enfin dans la fonction ViewDidLoad où se trouve mon async call :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    downloadJsonWithTask { (success, response, error) in
     
                if success {
     
                    //guard let datas = response as? [AnyObject] else { return }
                    guard let datas = response as? [Category] else { return }
     
                    var categoryRecup = [Category]()
     
                    /*for (index, data) in datas.enumerated() {
                        
                        //categoryRecup = data as! [Category]
                        categoryRecup.append(data as! Category)
                        
                    }*/
     
                    //self.tagsArray = tagsRecup
     
                    DispatchQueue.main.async {
     
                        self.collectionView.reloadData()
     
                    }
     
                }
                else if let error = error {
     
                    print(error)
     
                }
     
            }
    Là est le problème, je passe directement de la première à la dernière ligne, puis je rentre dans la définition de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    func downloadJsonWithTask(completion: @escaping (Bool, Any?, Error?) -> Void) {
     
            DispatchQueue.global().asyncAfter(deadline: .now() + 3) {
     
                let serverURL = URL(string:"https://byme.s3-eu-west-1.amazonaws.com/data/appConfig/999_AR/prod/1/furniture.json")
     
                do {
     
                    let data = try Data(contentsOf: serverURL!)
                    let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as AnyObject
     
                    var datas = [AnyObject]()
     
                    if let families = json["families"] as? [[String:Any]] {
     
                        for family in families {
     
                            var familyName = family["familyName"] as? String
     
                            if familyName == self.familySelect as? String {
     
                                if let categories = family["categories"] as? [String:Any] {
     
                                    if let sub_categories = categories["categories"] as? [String:Any] {
     
                                        var c:Category!
                                        c = Category(nameCategory:family["familyName"] as! String, pictoUUID: family["picto"] as! String)
                                        self.categoryDetail.append(c)
     
                                    }
     
                                }
     
                            }
     
                        }
     
                    }
     
                    datas.append(self.categoryDetail as AnyObject)
     
                    DispatchQueue.main.async {
     
                        completion(true, self.categoryDetail, nil)
     
                     }
     
     
                }
                catch {
     
                    DispatchQueue.main.async {
     
                        completion(false, nil, error)
     
                    }
     
                }
     
            }
     
        }
    et c'est la même chose, çà passe de la première à la dernière ligne direct sans rentrer et çà passe à l'instruction d'après.

Discussions similaires

  1. Passage de données entre deux executables
    Par Boumbata dans le forum C++
    Réponses: 8
    Dernier message: 08/02/2014, 04h55
  2. [AC-2010] Transfert de données entre deux tables avec recopie
    Par Mehdouche dans le forum VBA Access
    Réponses: 7
    Dernier message: 15/07/2013, 05h38
  3. Copie de données entre deux feuilles avec condition "Année"
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/07/2013, 15h58
  4. passage de valeur entre deux pages avec a href
    Par phenix1988 dans le forum Langage
    Réponses: 9
    Dernier message: 14/03/2011, 16h52
  5. Passage de données entre deux pages
    Par spica92 dans le forum ASP
    Réponses: 2
    Dernier message: 08/09/2005, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo