Свифт дай давай значения - PullRequest
0 голосов
/ 08 мая 2018

Я хочу написать Не позволяйте значениям

У меня есть

 "id": 17,
 "name": "",
    "team_id": 4,
    "is_delete": false,
    "created_at": "2018-04-30",
    "members": [
        {
            "id": 42,
            "username": "ie",
        }
    ],
    "description": null,

Я пытаюсь сделать это

let id: Int
let name: String
let team_id: Int
let is_delete: Bool
let created_at: String

let description: NSNull

но не знаю, как правильно добавить массив members. и NSNull является правильным для нулевого значения?

1 Ответ

0 голосов
/ 08 мая 2018

Итак, я полагаю, вы пытаетесь написать Codable struct / class, который можно использовать для декодирования вашего JSON?

Способ обработки null заключается в использовании необязательных типов. Из названия, я думаю, description была бы строкой, если бы она не была нулевой, поэтому мы должны использовать String? в качестве типа:

struct TeamMember: Codable {
    let id: Int
    let username: String
}

struct Team: Codable {
    let id: Int
    let name: String
    let team_id: Int
    let is_delete: Bool
    let created_at: String
    let members: [TeamMember]

    let description: String? // <---- this line
}

Вот пример декодирования:

// I escaped the json using an online decoder I found. It's basically the same JSON in the question.
let jsonData = "{ \"id\": 17,\r\n \"name\": \"\",\r\n    \"team_id\": 4,\r\n    \"is_delete\": false,\r\n    \"created_at\": \"2018-04-30\",\r\n    \"members\": [\r\n        {\r\n            \"id\": 42,\r\n            \"username\": \"ie\",\r\n        }\r\n    ],\r\n    \"description\": null}".data(using: .utf8)
let decoder = JSONDecoder()
let team = try! decoder.decode(Team.self, from: jsonData!)
print(team.id)
...