Bonjour,

Je commence à m'intéresser au développement iOS afin de créer une app pour mon site de météo.

J'ai les données de ma station météo qui sont généré en JSON donc voici le code

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
{
  "title":"Conditions Actuelles",
  "location":"MeteoWapi, Belgique",
  "time":"13-fév-2018 20:45",
  "lat":"50° 38.40' N",
  "lon":"003° 22.32' O",
  "alt":"21 meter",
  "hardware":"Lacrosse WS1640",
  "uptime":"22 Jours, 22 Heures, 38 Minutes",
  "serverUptime":"64 Jours, 22 Heures, 19 Minutes",
  "weewxVersion":"3.8.0",
  "stats": {
    "current": {
      "outTemp":"2,9",
      "heatIndex":"2,9°C",
      "dewpoint":"-4,3°C",
      "humidity":"59%",
      "insideHumidity":"44%",
      "barometer":"1002 mbar",
      "barometerTrendDelta":"3 Heures",
      "barometerTrendData":"1 mbar",
      "windSpeed":"10 km/h",
      "windDir":"125°",
      "windDirText":"SE",
      "windGust":"13 km/h",
      "windGustDir":"   N/A",
      "rainRate":"0,0 mm/h",
      "insideTemp":"21,6°C"
    },
        "sinceMidnight": {
      "tempMaxValue":"5,8°C",
      "tempMaxTime":"14:30",
      "tempMinValue":"-0,4°C",
      "tempMinTime":"07:33",
      "heatIndexMaxValue":"5,8°C",
      "heatIndexMaxTime":"14:30",
      "windchillMinValue":"-4,5°C",
      "windchillMinTime":"07:57",
      "humidityMaxValue":"80%",
      "humidityMaxTime":"05:49",
      "humidityMinValue":"57%",
      "humidityMinTime":"15:53",
      "dewpointMaxValue":"-0,6°C",
      "dewpointMaxTime":"11:13",
      "dewpointMinValue":"-4,4°C",
      "dewpointMinTime":"20:23",
      "barometerMaxValue":"1010 mbar",
      "barometerMaxTime":"00:00",
      "barometerMinValue":"1000 mbar",
      "barometerMinTime":"15:50",
      "rainSum":"0,0 mm",
      "rainRateMaxValue":"0,0 mm/h",
      "rainRateMaxTime":"00:00",
      "windMaxValue":"42 km/h",
      "windMaxGustDir":"   N/A",
      "windMaxTime":"13:35",
      "windAvg":"10 km/h",
      "windRms":"10 km/h",
      "windVecAvg":"9 km/h",
      "windVecDir":"154°",
       "inTempMaxValue":"21,8°C",
       "inTempMaxTime":"13:50",
       "inTempMinValue":"21,5°C",
       "inTempMinTime":"00:43"
    }
  },
  "almanach":{
    "sun":{
      "startCivilTwilight":"07:27",
      "sunrise":"08:01",
      "transit":"13:00",
      "sunset":"18:00",
      "endCivilTwilight":"18:34",
      "azimuth":"282.0°",
      "altitude":"-26.6°",
      "rightAscension":"327.3°",
      "declination":"-13.2°",
      "equinox":"20-mar-2018 17:15",
      "solstice":"21-jun-2018 12:07"
    },
    "moon":{
      "rise":"06:42",
      "transit":"11:09",
      "set":"15:40",
      "azimuth":"299.7°",
      "altitude":"-45.1°",
      "rightAscension":"303.9°",
      "declination":"-19.0°",
      "fullMoon":"02-mar-2018 01:51",
      "newMoon":"15-fév-2018 22:05",
      "phase":"Lune descendante",
      "fullness":"4%"
    }
  }
}
J'arrive à afficher les données title et time dans mon application, mais dés que j'essaie d'ajouter du contenu j'ai le massage d'erreur suivant :

Type 'Daily' does not conform to protocol 'Decodable'
Pour une meilleurs compréhension, voici le code de mon ViewController.swift

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
//
//  ViewController.swift
//  MétéoWapi
//
//  Created by Jean-François Coquerelle on 11/02/18.
//  Copyright © 2018 Jean-François Coquerelle. All rights reserved.
//
 
import UIKit
 
struct Daily: Decodable {
    let title: String?
    let time: String?
    let outTemp: Int?
 
    private enum CodingKeys: String, CodingKey {
        case title
        case time
    }
 
}
 
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
 
        let jsonDailyUrl = "https://meteowapi.be/json/daily.json"
        let url = URL(string: jsonDailyUrl)
 
        URLSession.shared.dataTask(with: url!) { (data, response
        , error) in
 
        guard let data = data else { return }
        do {
            let decoder = JSONDecoder()
 
            let dailyData = try decoder.decode(Daily.self, from: data)
 
 
        DispatchQueue.main.sync {
 
            if let titles = dailyData.title {
            self.titles.text = titles
            }
            if let timeUpdate = dailyData.time {
                self.timeUpdate.text = timeUpdate
            }
//            if let outTemp = dailyData.windDirText{
//                self.outTemp.text = outTemp
//            }
            self.setLabelStatus(value: false)
        }
 
        } catch let err {
        print("Err", err)
        }
        }.resume()
 
    }
 
        func setLabelStatus(value: Bool) {
            titles.isHidden = value
            timeUpdate.isHidden = value
            outTemp.isHidden = value
    }
    @IBOutlet weak var titles: UILabel!
    @IBOutlet weak var timeUpdate: UILabel!
    @IBOutlet weak var outTemp: UILabel!
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
 
 
}
Je vous remercie d'avance de me mettre sur la voie