Буквенно-цифровой идентификатор не отображается, но выводит ноль - PullRequest
0 голосов
/ 17 апреля 2019

Итак, у меня проблемы с отображением моего атрибута ID из моих данных json.Я не совсем уверен, что мне не хватает, потому что я смог успешно сопоставить аналогичный атрибут, который также имеет аналогичные данные.

Вот моя модель, которую я создал:

import Foundation
import ObjectMapper

enum ItemsModelEnum: String {

    case kind = "kind"
    case etag = "etag"
    case id = "id"

}

struct ItemsModel: Mappable {

    var kind: String!
    var etag: String!
    var id: String!


    init?(map: Map) {

    }

    init(kind: String, etag: String, id: String) {
        self.kind = kind
        self.etag = etag
        self.id = id
    }

    init() {
        self.kind = ""
        self.etag = ""
        self.id = ""

    }

    mutating func mapping(map: Map) {

        kind <- map[ItemsModelEnum.kind.rawValue]
        etag <- map[ItemsModelEnum.etag.rawValue]
        id <- map[ItemsModelEnum.id.rawValue]
    }

}

И этомой код отображения, который я использовал:

do {
    if let data = data,
        let videoData =  Mapper<ItemsModel>().map(JSONObject: try JSONSerialization.jsonObject(with: data, options: [])) {

            completionHandler(videoData,(response as! HTTPURLResponse), error)
            print("videoData Received Successfully")
        }
} catch {
    completionHandler(nil,(response as! HTTPURLResponse), error)
    print("Error parsing json get video data: ", error.localizedDescription)
}

Ниже приведены данные json, которые я пытаюсь отобразить:

{
    "kind": "youtube#playlistItemListResponse",
    "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/b8GuhpTu3jI8LxmNA8qvlToNlPw\"",
    "pageInfo": {
        "totalResults": 4,
        "resultsPerPage": 10
    },
    "items": [
        {
            "kind": "youtube#playlistItem",
            "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/kB3sYP4gnQpTay_xsLPdd60nCjI\"",
            "id": "UExDQWlfRXlJcWtfdTJyaG1aS0Jhdzk0NmNmVXhENHg5NS41NkI0NEY2RDEwNTU3Q0M2",

        }
}

Интересно то, что атрибут etag отображается успешно, ноНе так, что атрибут id, поскольку он дает мне ноль, когда я получаю ответ.

Есть идеи, что может быть причиной?

В моем Xcode, когда я печатаю свой объект, я получаю следующеевывод:

Печать описания видеоДанные:

▿ ItemsModel
  ▿ kind : Optional<String>
    - some : "youtube#playlistItemListResponse"
  ▿ etag : Optional<String>
    - some : "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/qgaG7pUX51uAQMMOBOI0NggOfXM\""
  - id : nil

1 Ответ

0 голосов
/ 17 апреля 2019

Вы пытаетесь получить id, но у вас есть pageInfo или items.Вам нужно пойти глубже и получить путь ["items"][0]["id"]

Вы пытаетесь получить идентификатор непосредственно от объекта, но нужный объект расположен глубже.

Вам необходимо создать 3 структуры для main object, для объекта с ключом "pageInfo", для объекта с ключом "items".

...