首页 > 解决方案 > 在这种情况下,“D”对于类型查找不明确

问题描述

我在带有 Xcode 10 的 Swift 4.2 中面临以下问题

在此处输入图像描述

我正在创建所有模型类。API 响应包含这种类型的 JSON 对象:

{  
   "d":{  
      "results":[  
         {  
            "__metadata":{  
               "id":"urls"
            }
         }
      ]
   }
}

如何创建具有相同名称而没有歧义的类?

这是我的类实现:

import Foundation
import Alamofire

class SearchPINModel: Codable {
    let d: D?

    init(d: D?) {
        self.d = d
    }
}

class D: Codable {
    let results: [Result]?

    init(results: [Result]?) {
        self.results = results
    }
}

class Result: Codable {
    let metadata: Metadata?
    let sapID, deviceID, mobileNo, employeeName: String?
    let pincode, sapUser, deviceCode: String?

    enum CodingKeys: String, CodingKey {
        case metadata = "__metadata"
        case sapID = "SapId"
        case deviceID = "DeviceId"
        case mobileNo = "MobileNo"
        case employeeName = "EmployeeName"
        case pincode = "Pincode"
        case sapUser = "SapUser"
        case deviceCode = "DeviceCode"
    }

    init(metadata: Metadata?, sapID: String?, deviceID: String?, mobileNo: String?, employeeName: String?, pincode: String?, sapUser: String?, deviceCode: String?) {
        self.metadata = metadata
        self.sapID = sapID
        self.deviceID = deviceID
        self.mobileNo = mobileNo
        self.employeeName = employeeName
        self.pincode = pincode
        self.sapUser = sapUser
        self.deviceCode = deviceCode
    }
}

class Metadata: Codable {
    let id, uri: String?
    let type: String?

    init(id: String?, uri: String?, type: String?) {
        self.id = id
        self.uri = uri
        self.type = type
    }
}

标签: jsonswift

解决方案


你可以试试

struct Root: Codable {
    let d: D
}

struct D: Codable {
    let results: [Result]
}

struct Result: Codable {
    let metadata: Metadata

    enum CodingKeys: String, CodingKey {
        case metadata = "__metadata"
    }
}

struct Metadata: Codable {
    let id: String
}

推荐阅读