Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-通过多个类连接有内容的数据_Ios_Swift_Contentful - Fatal编程技术网

Ios Swift-通过多个类连接有内容的数据

Ios Swift-通过多个类连接有内容的数据,ios,swift,contentful,Ios,Swift,Contentful,我正在尝试从我的Swift应用程序中的Contentful获取数据,但一直无法获取字典 更新:类型为链接&链接类型为条目。所以我需要解码一个条目的链接 因此,在项目A的内容数据中,我有: "itemB": { "sys": { "type": "Link", "linkType": "Entry", "id": "id_is_here" } }, 但是

我正在尝试从我的
Swift
应用程序中的
Contentful
获取数据,但一直无法获取
字典

更新:类型为链接&链接类型为条目。所以我需要解码一个条目的链接

因此,在
项目A的内容数据中,我有:

        "itemB": {
          "sys": {
            "type": "Link",
            "linkType": "Entry",
            "id": "id_is_here"
          }
        },
但是在我的代码中,我的
itemB
nil

以下是我尝试过的:

// Item A
class ItemA: EntryDecodable, FieldKeysQueryable {

    static let contentTypeId: String = "ItemA"

    // FlatResource Memberes.
    let id: String
    var updatedAt: Date?
    var createdAt: Date?
    var localeCode: String?

    var itemB: ItemB?

    public required init(from decoder: Decoder) throws {

        let sys          = try decoder.sys()
        id               = sys.id
        localeCode       = sys.locale
        updatedAt        = sys.updatedAt
        createdAt        = sys.createdAt

        let fields       = try decoder.contentfulFieldsContainer(keyedBy: FieldKeys.self)

        try fields.resolveLink(forKey: .itemB, decoder: decoder) { [weak self] item in
            self?.itemB = item as? ItemB
        }
    }

    enum FieldKeys: String, CodingKey {

        case itemB
    }

    public init(sys: Sys, itemB: ItemB?) {

        id               = sys.id
        localeCode       = sys.locale
        updatedAt        = sys.updatedAt
        createdAt        = sys.createdAt
        self.itemB       = itemB
    }
}

// Item B
class ItemB: EntryDecodable, FieldKeysQueryable {

    static let contentTypeId: String = "ItemB"

    // FlatResource Memberes.
    let id: String
    var updatedAt: Date?
    var createdAt: Date?
    var localeCode: String?

    let name: String?

    public required init(from decoder: Decoder) throws {

        let sys          = try decoder.sys()
        id               = sys.id
        localeCode       = sys.locale
        updatedAt        = sys.updatedAt
        createdAt        = sys.createdAt

        let fields       = try decoder.contentfulFieldsContainer(keyedBy: FieldKeys.self)

        self.name        = try fields.decode(String.self, forKey: .name)
    }

    enum FieldKeys: String, CodingKey {

        case name
    }

    public init(sys: Sys, name: String) {

        id          = sys.id
        localeCode  = sys.locale
        updatedAt   = sys.updatedAt
        createdAt   = sys.createdAt
        self.name   = name
    } 
}

您的json itemB没有name或createdAt,为什么需要它们,而放弃type、linkType。。?我只是想看看你是否遗漏了什么,或者这是你出于某种原因的意图。我可能没有使用正确的术语,但我想我只是想从ItemA映射到ItemB。所以基本上,A项可能包含也可能不包含B项中的一个或多个。B项中有更多的数据。@matt我正在使用Postman,可以吐出我的JSON,因此我可以准确地看到我需要的内容。我只是不知道正确的编码方法。我只需要能够得到我的itemB(如上所列),这样我就可以得到那个ID,然后再进行另一个匹配。但现在Xcode只是说它是零。